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);
我在MySQL上使用此查询进行多次插入。这可能在Oracle吗?
答案 0 :(得分:1)
我假设你正在使用oracle。
如果你想一次性INSERT
多行,你可以这样做:
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;
答案 1 :(得分:1)
您发布的示例与PL / SQL中的示例不同。
如果您想在同一个表中插入多个列,则可以执行两项操作。您可以在语句中使用多个insert。
例如:
INSERT INTO Billing(Emp_Id, Biling_Date) VALUES ('1001', '2017-06-08');
INSERT INTO Billing(Emp_Id, Biling_Date) VALUES ('1002', '2017-06-08');
或者您可以创建一个过程,在表中插入,然后调用该过程。这样你就不必经常写出所有的列名。
例如:
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;
/