sqlplus与空行.txt
开发人员交给一些sql脚本,要在服务器上运行,我检查一下,没有什么问题,在测试机器运行:
1* create table t(number(10)
SP2-0734: unknown command beginning "b varchar2..." - rest of line ignored.
SP2-0042: unknown command ")" - rest of line ignored.
打开脚本检查发现没有什么错误,唯一的不同是有一行空行在create后面,具体例子如下:
$cat a.sql
create table t(
a number(3),
b varchar2(10)
);
对比上面错误发现,缺少a,开始怀疑脚本存在怪字符,在vi下打入:set list,并没有发现任何异常。删除空行,粘贴出来执行,一切正常!开始手工打入命令执行:
SQL> create table t (
2
SQL> a
SP2-0004: Nothing to append.
可以发现在第2行回车后,跳到了SQL>提示符,退出了执行.换一句话,sql脚本在语句中不能包含空行,这个还第一次遇到!又测试一个存贮过程,发现问题有不存在。
SQL> create procedure testproc
2
3 as
4 begin
5 null;
6 end;
7 /
$ sqlplus scott/test | tee set.txt
SQL> show all
SQL> quit
$ grep -i blank set.txt
sqlblanklines OFF
感觉就是这个参数控制空行行为。
SQL> drop table t purge ;
SQL> set sqlblanklines on
SQL> create table t(
2
3 a number(3)
4 )
5 /
再次执行一切OK了。