我知道如果我使用这个答案中的语法,我可以使用单个语句插入多行.
但是,我插入的值之一取自序列,即
insert into TABLE_NAME
(COL1,COL2)
select MY_SEQ.nextval,'some value' from dual
union all
select MY_SEQ.nextval,'another value' from dual
;
Run Code Online (Sandbox Code Playgroud)
如果我尝试运行它,我会收到ORA-02287错误.有什么方法可以解决这个问题,还是应该使用很多INSERT语句?
编辑:
如果我必须为序列以外的所有其他列指定列名,我将失去原有的简洁性,所以它不值得.在那种情况下,我将只使用多个INSERT语句.
首先,这个问题涉及Oracle SQL Developer 3.2,而不是SQL*Plus或iSQL等.我已经做了很多搜索,但还没有找到一个直接的答案.
我有几个脚本集合,我正在尝试自动化(顺便说一句,我的SQL经验非常基本,主要是基于MS的).我遇到的麻烦是通过相对路径执行它们.例如,假设此设置:
scripts/A/runAll.sql
| /A1.sql
| /A2.sql
|
/B/runAll.sql
/B1.sql
/B2.sql
Run Code Online (Sandbox Code Playgroud)
我想要一个这样的文件scripts/runEverything.sql:
@@/A/runAll.sql
@@/B/runAll.sql
Run Code Online (Sandbox Code Playgroud)
脚本/ A/runAll.sql:
@@/A1.sql
@@/A2.sql
Run Code Online (Sandbox Code Playgroud)
在那里"@@",我推测,是指在SQL*Plus相对路径.
我愚弄了制作变量,但没有太多运气.我已经能够'&1'在根目录中使用和传递类似的东西.即:scripts/runEverything.sql:
@'&1/A/runAll.sql' '&1/A'
@'&1/B/runAll.sql' '&1/B'
Run Code Online (Sandbox Code Playgroud)
并通过执行以下命令调用它:
@'c:/.../scripts/runEverything.sql' 'c:/.../scripts'
Run Code Online (Sandbox Code Playgroud)
但这里的问题是B/runAll.sql用路径调用:c:/.../scripts/A/B.
那么,SQL Developer是否可以进行嵌套调用,以及如何进行?