Oracle insert批量插入语法

Oracle insert批量插入语法INSERTALLINTOA(field_1,field_2)VALUES(value_1,value_2)INTOA(field_1,field_2)VALUES(value_3,value_4)INTOA(field_1,field_2)VALUES(value_5,value_6)SELECT1FROMDUAL;补充:评论里提到的为什么要加SELECT1FROMDUAL?官方例子:INSERTALLINTOsales(prod_.

Oracle

 INSERT ALL 
 INTO A(field_1,field_2) VALUES (value_1,value_2) 
 INTO A(field_1,field_2) VALUES (value_3,value_4) 
 INTO A(field_1,field_2) VALUES (value_5,value_6)
 SELECT 1 FROM DUAL;

补充:评论里提到的为什么要加 SELECT 1 FROM DUAL?
官方例子:

INSERT ALL
INTO sales (prod_id, cust_id, time_id, amount)
VALUES (product_id, customer_id, weekly_start_date, sales_sun)
INTO sales (prod_id, cust_id, time_id, amount)
VALUES (product_id, customer_id, weekly_start_date+1, sales_mon)
INTO sales (prod_id, cust_id, time_id, amount)
VALUES (product_id, customer_id, weekly_start_date+2, sales_tue)
INTO sales (prod_id, cust_id, time_id, amount)
。。。
SELECT product_id, customer_id, weekly_start_date, sales_sun,
sales_mon, sales_tue, sales_wed, sales_thu, sales_fri, sales_sat
FROM sales_input_table;
个人理解:

“ALL into_clause: Specify ALL followed by multiple insert_into_clauses to perform an unconditional multitable insert. Oracle Database executes each insert_into_clause once for each row returned by the subquery.”

insert all into并不表示一个表中插入多条记录,而是表示多表插入各一条记录,而这多表可以是同一个表,就成了单表插入多条记录。根据后面子查询的结果,前面每条into语句执行一次,博客正文中value都是“字面量”,所以用select 1 from dual返回一条记录即可。

参考地址:https://docs.oracle.com/database/121/SQLRF/statements_9015.htm#SQLRF01604

补充:

oracle问题:

SELECT 1 from dual的作用?

回答:

①. 这是oracle中自带的一个虚拟表,用它来可以查看一些系统信息;比如系统时间 :select sysdate from dual;

②. dual是虚拟表,这句话的意思就是返回一个值,这里的值就是1

今天的文章Oracle insert批量插入语法分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/31447.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注