生产环境oracle添加数据问题
执行的脚本大致是这样的
insert into xxx(列名1,列名2,列名3.。。。。。。。。。。。。。)
(select .......)
生产环境执行之后,数据没有添加进去,只有select之后的结果。在查了资料以后,才发现原来sqlplus中执行,脚本中不能有空行,去掉空行之后,执行ok
百度资料:
默认情况下,在sqlplus中运行的脚本,如包含空行,sqlplus会不认的,对sqlplus空行的出现,最常见的有两种形式,一种是sql语句中有空行,另一种是sql后有空行,如下:
sqlplus运行的sql语句中有空行
view plaincopy to clipboardprint?
--a1.sql
select sysdate
from
dual;
sqlplus运行sql语句中无空行,但sql语句与分号(结束符)有空行
view plaincopy to clipboardprint?
--b1.sql
select sysdate
from dual
;
默认情况下,sqlplus遇空行的处理结果:
dw@dw>@a1.sql
SP2-0042: 未知命令 "from" - 其余行忽略。
SP2-0042: 未知命令 "dual" - 其余行忽略。
dw@dw>@b1.sql
1 select sysdate
2* from dual
dw@dw>
对于上述两种空行,sqlplus处理方式差不多,第一种只能在sql语句前加上set sqlblanklines on,sqlplus就会正确处理空行;
对于第二种情况,可以加set sqlblanklines on,也可以将分号改为 /,sqlplus就会正确处理空行。
在脚本中加上set sqlblankline on前后,sqlplus遇空行的处理结果:
view plaincopy to clipboardprint?
--a1.sql
set sqlblankline off
select sysdate
from
dual
/
set sqlblankline on
select sysdate
from
dual;
dw@dw>@a1.sql
dw@dw>set sqlblankline off
dw@dw>select sysdate
2
dw@dw>from
SP2-0042: 未知命令 “from” – 其余行忽略。
dw@dw>
dw@dw>dual
SP2-0042: 未知命令 “dual” – 其余行忽略。
dw@dw>/
select sysdate
*
第 1 行出现错误:
ORA-00923: 未找到要求的 FROM 关键字
dw@dw>set sqlblankline on
dw@dw>select sysdate
2
3 from
4
5 dual;
SYSDATE
——————-
2011-06-27 23:42:32
已选择 1 行。
view plaincopy to clipboardprint?
--b1.sql
set sqlblankline off
select sysdate
from dual
/
set sqlblankline on
select sysdate
from dual
;
如果在sql结尾出现空行,可以用/代替分号,也可以完成对sqlplus 空行的处理。
dw@dw>--b1.sql dw@dw>set sqlblankline off
dw@dw>
dw@dw>select sysdate 2 from dual 3
dw@dw>/
SYSDATE
-------------------
2011-06-27 23:42:58
已选择 1 行。
dw@dw>
dw@dw>set sqlblankline on
dw@dw>select sysdate 2 from dual 3 4 5 ;
SYSDATE
-------------------
2011-06-27 23:42:58
已选择 1 行。
dw@dw>
原文:http://www.cnblogs.com/li1129499045/p/5125613.html