sqlplus與空行.txt

lfree發表於2011-12-08
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了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-712957/,如需轉載,請註明出處,否則將追究法律責任。

相關文章