2017-07-18 11 views
0
erstellen

Gibt es eine Möglichkeit, wie viele Zeilen in der Tabelle eingefügt zu zählen durchWie viele Zeilen in der Tabelle eingefügt durch table-Anweisung

Create table tbl1 as select * from tbl2; 

Aussage, die von PL \ SQL-Funktion ausgeführt (execute immediate)?

Wenn ich mit SQL% ROWCOUNT das Ergebnis 1.

Dank.

+0

Mögliches Duplikat [Wie Anzahl der Zeilen, die von einer Transaktion eingefügt bekommen] (https://stackoverflow.com/questions/2272733/how-to-get-number-of-rows-inserted-by -a-transaction) –

+0

Ich suche nach einer Lösung in Oracle nicht Sql-Server – user2671057

+0

'SQL% ROWCOUNT' wird die Anzahl der Zeilen von DML-Anweisung betroffen geben, als Sie ausgeführt haben Execute sofort ', gab es nur 1 Operation und dass die Tabelle so erstellt wird, dass die Anzahl der Zeilen 1 beträgt. Im nächsten Schritt können Sie sie zählen. in einer Variablen und überprüfen Sie es, – XING

Antwort

1

Sie können dies versuchen. Wie in meinem Kommentar erwähnt, müssen Sie es wie folgt tun. Denken Sie daran, dass Sie erneut Execute immediate verwenden müssen, sonst erhalten Sie ein Problem, dass tab1 nicht definiert ist.

DECLARE 
    vsql VARCHAR2 (200); 

    cnt NUMBER; 
BEGIN 
    vsql := 'create table tbl1 as select * from employee'; 

    EXECUTE IMMEDIATE vsql; 

    vsql := 'select count(1) from tbl1'; 

    EXECUTE IMMEDIATE vsql INTO cnt; 

    DBMS_OUTPUT.put_line (cnt); 
END; 
1

Sie können eine Sache tun. Sie können zuerst eine leere Tabelle tbl1 von tbl2 erstellen. Fügen Sie dann Daten mit SELECT ein und verwenden Sie dann SQL%ROWCOUNT.

CREATE TABLE tbl1 AS SELECT * FROM tbl2 WHERE 1=2; 
INSERT INTO tbl1 SELECT * FROM tbl2; 
DBMS_OUTPUT.PUT_LINE ('No. of rows inserted in TBL2 from TBL1 = ' || SQL%ROWCOUNT); 
Verwandte Themen