Oracle SQL中的多个插件如MySQL?

时间:2017-07-14 11:04:00

标签: mysql sql oracle

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吗?

2 个答案:

答案 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;
/