相关疑难解决方法(0)

如何使用序列值将多行插入oracle?

我知道如果我使用这个答案中的语法,我可以使用单个语句插入多行.

但是,我插入的值之一取自序列,即

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语句.

sql oracle

43
推荐指数
2
解决办法
16万
查看次数

在Oracle SQL Developer中按相对路径执行脚本

首先,这个问题涉及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是否可以进行嵌套调用,以及如何进行?

sql oracle relative-path sql-scripts oracle-sqldeveloper

6
推荐指数
1
解决办法
6万
查看次数