【发布时间】:2019-07-10 12:31:49
【问题描述】:
给定一个 PL/SQL 块,我可以在其中访问 2 个记录类型变量,我想在单个语句中将这 2 个记录插入到同一个表中,但我尝试使用 INSERT ALL 迄今为止失败了。是否可以将INSERT ALL 与记录变量一起使用?
下面是一些使用专用插入的代码:
DECLARE
mProperty1 MyTable%ROWTYPE;
mProperty2 MyTable%ROWTYPE;
...
BEGIN
...
INSERT INTO MyTable VALUES mProperty1;
INSERT INTO MyTable VALUES mProperty2;
...
END;
如果我尝试将语句转换为 INSERT ALL,则会失败并显示错误消息:
DECLARE
mProperty1 MyTable%ROWTYPE;
mProperty2 MyTable%ROWTYPE;
...
BEGIN
...
INSERT ALL
INTO MyTable VALUES mProperty1
INTO MyTable VALUES mProperty2
SELECT 1 FROM DUAL;
...
END;
ORA-06550:第 14 行,第 60 列: PLS-00382:表达式类型错误 ORA-06550:第 13 行,第 60 列: PLS-00382:表达式类型错误 ORA-06550:第 13 行,第 60 列: PL/SQL: ORA-00904: : 无效标识符 ORA-06550:第 12 行,第 7 列: PL/SQL:忽略 SQL 语句
我是否遗漏了一些明显的东西?有没有办法让这个声明生效?
【问题讨论】:
-
@KedarLimaye 我不完全确定该线程在这种情况下有何帮助。它似乎没有使用
INSERT ALL并且正在处理光标,这不是我在这里使用的。 -
您使用 insert all 的任何具体原因?
-
@KedarLimaye 在这种特殊情况下,我只是想让我的脚本尽可能简短和高效,所以我直接假设 API 与普通的
INSERT正交。
标签: oracle plsql bulkinsert