1. 程式人生 > >在sqlplus中執行語句時候報錯誤SP2-0734: 未知的命令開頭"id varchar..."

在sqlplus中執行語句時候報錯誤SP2-0734: 未知的命令開頭"id varchar..."

提交給維護部門批量修改資料的檔案,在sqlplus中執行時候報錯
SP2-0734: unknown command beginning "where t.bg..." - rest of line ignored.

SQL> 19‘,‘YYYY-MM-dd‘),0); SP2-0734: unknown command beginning "19‘,‘YYYY-..." - rest of line ignored.

等等。

原因分析及解決方法

原來Sql*plus中, 不允許一條sql語句內有空行(當然,sql語句間有空行沒有關係, 這在從其它地方拷貝指令碼到sql*plus中執行時很麻煩.

原因是sqlplus遇到空行就認為是語句結束了.
其實要改變這種現象, 只要使用SQLBLANKLINES引數就可以了
[email protected]> SET SQLBLANKLINES ON

附加例子:


SQL> @1.sql
SP2-0734: 未知的命令開頭 "id varchar..." - 忽略了剩餘的行。
SP2-0734: 未知的命令開頭 "name varch..." - 忽略了剩餘的行。
SP2-0734: 未知的命令開頭 "age varcha..." - 忽略了剩餘的行。
SP2-0042: 未知命令 ")" - 其餘行忽略。
SP2-0044: 要獲取已知命令的列表, 請輸入 HELP;


輸入 EXIT 可退出。
提交完成。
SQL>

其中1.sql中的內容為:
create table person
(

id varchar(32) not null primary key ,
name varchar(20) not null ,
age varchar(20) not null
)
commit ;

上述一條sql語句內有空行。

============================================================

解決sqlplus裡執行@sql.sql發生的錯誤現象


【賽迪網-IT技術報道】這篇論壇文章(賽迪網技術社群)著重介紹了sqlplus裡執行@sql.sql發生的錯誤現象的解決方法,更多詳細內容請參考下文:

昨天準備下班,應用打來電話說有事過去看個問題,

過去一看,發現是在sqlplus裡執行SQL檔案出現了錯誤,錯誤如下:

SQL>@sql.sql

SP2-0734:unknown command beginning "sql.sql" - rest of line ignored.

當時沒有解決,出現這個錯誤使用的是NetTerm終端工具,懷疑是終端或環境變數設定的問題,使用windows自帶的telnet工具登入到遠端伺服器還是出現同樣的問題,最後,換臺機器使用crt登入後問題解決。

今天,在網上查查了原因還是系統環境變數的設定問題,使用stty kill ^U可以解決:

stty erase "^H" kill "^U" intr "^C" eof "^D"

如果是由於指令碼檔案sql.sql裡的某些sql語句內存在空行而報上述錯誤的話,可以使用如下命令解決:

set sqlblanklines on

參考:

sqlplus @ sp2-0734 百度

sqlplus @  百度