sql - 在 Oracle 中进行多行插入的最佳方法?

标签 sql oracle sql-insert oracle9i

我正在寻找一种向 Oracle 9 数据库执行多行插入的好方法。以下内容在 MySQL 中有效,但在 Oracle 中似乎不受支持。

INSERT INTO TMP_DIM_EXCH_RT 
(EXCH_WH_KEY, 
 EXCH_NAT_KEY, 
 EXCH_DATE, EXCH_RATE, 
 FROM_CURCY_CD, 
 TO_CURCY_CD, 
 EXCH_EFF_DATE, 
 EXCH_EFF_END_DATE, 
 EXCH_LAST_UPDATED_DATE) 
VALUES
    (1, 1, '28-AUG-2008', 109.49, 'USD', 'JPY', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
    (2, 1, '28-AUG-2008', .54, 'USD', 'GBP', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
    (3, 1, '28-AUG-2008', 1.05, 'USD', 'CAD', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
    (4, 1, '28-AUG-2008', .68, 'USD', 'EUR', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
    (5, 1, '28-AUG-2008', 1.16, 'USD', 'AUD', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
    (6, 1, '28-AUG-2008', 7.81, 'USD', 'HKD', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008');

最佳答案

在 Oracle 中,要将包含列 col1、col2 和 col3 的多行插入到表 t 中,您可以使用以下语法:

INSERT ALL
   INTO t (col1, col2, col3) VALUES ('val1_1', 'val1_2', 'val1_3')
   INTO t (col1, col2, col3) VALUES ('val2_1', 'val2_2', 'val2_3')
   INTO t (col1, col2, col3) VALUES ('val3_1', 'val3_2', 'val3_3')
   .
   .
   .
SELECT 1 FROM DUAL;

关于sql - 在 Oracle 中进行多行插入的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39576/

相关文章:

java - 使用 jOOQ 更新交叉引用表

oracle - Pragma UDF 如何工作?

sql - 如何在 SQL 中组合WITH语句和INSERT INTO

sql - 将数据插入分桶 Hive 表

mysql - 当我的 WHERE 子句过滤掉结果时,如何将结果包含在我的数据集中?

c# - 为什么我的插入表行的 SQL 查询不能正常工作?

sql - 在数据库级别应用业务规则

database - 将 unicode 文本插入 Oracle 数据库表

SQL Insert Select 当select 检索多条记录时

c# - 如何改进这段代码