2017-07-14 4 views
0
INSERT INTO billing 
    (billing.emp_id, billing.billing_date, billing.billing_flag) 
VALUES 
    (1001, '2017-06-08', true), 
    (1002, '2017-06-08', true) ON DUPLICATE KEY UPDATE billing_date = 
VALUES 
    (billing_date), billing_flag = 
VALUES 
    (billing_flag); 

Ich benutze diese Abfrage auf MySQL für mehrere Einsätze. Ist das in Oracle möglich?Mehrere Einfügungen in Oracle SQL wie MySQL?

+0

Mögliche Duplikat [Oracle: ON DUPLICATE KEY UPDATE] (https://stackoverflow.com/questions/17254018/oracle-on-duplicate-key-update) –

+0

von ' update 'Ich denke du meinst' einfügen '. Dies sind zwei verschiedene Dinge in SQL. Ich habe die Frage bearbeitet, um dies zu reflektieren. Bitte bearbeiten Sie es, wenn Sie das nicht möchten. –

Antwort

1

Ich nehme an, Sie verwenden Oracle. Wenn Sie in einem Rutsch zu INSERT mehrere Zeilen möchten, können Sie es wie folgt tun:

INSERT ALL 
    INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n) 
    INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n) 
    INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n) 
SELECT * FROM dual; 
0

Das Beispiel, das Sie geschrieben wird nicht wie das funktioniert in PL/SQL.
Wenn Sie mehrere Spalten in derselben Tabelle einfügen möchten, können Sie zwei Dinge tun. Sie könnten mehrere Insert-Anweisungen verwenden.

Zum Beispiel:

INSERT INTO Billing(Emp_Id, Biling_Date) VALUES ('1001', '2017-06-08'); 
INSERT INTO Billing(Emp_Id, Biling_Date) VALUES ('1002', '2017-06-08'); 

Oder Sie eine Prozedur machen könnte, wo der Einsatz in der Tabelle zu tun, und dann diese Prozedur aufrufen. Auf diese Weise müssen Sie nicht ständig alle Spaltennamen ausschreiben.

Zum Beispiel:

CREATE OR REPLACE PROCEDURE InsertBilling (nEmp_Id IN NUMBER, vBiling_Date IN VARCHAR2) 
AS 
BEGIN 
     INSERT INTO Billing(Emp_Id, Biling_Date) 
     VALUES (nEmp_Id, vBiling_Date); 

     COMMIT; 
END; 
/

BEGIN 
     InsertBilling('1001', '2017-06-08'); 
     InsertBilling('1002', '2017-06-08'); 
END; 
/
Verwandte Themen