sqlplus執行有空行的SQL語句
拷貝有空行的SQL語句到PLSQL或者SQL*PLUS中執行報錯。
1.1.1 現象描述
XX報表系統在安裝時,需要從文字編輯工具中拷貝SQL語句到PLSQL中執行,在PLSQL的執行視窗中,會出現空行,比如下面的指令碼:
CREATE OR REPLACE VIEW v_userlog
AS
SELECT
logid, --日誌編號
logtime, --操作時間
phonenumber, --使用者號碼
servicetype, --業務型別
operatetype,
olditem, --修改前狀態
newitem, --修改後狀態
admincode , --客服帳號
reasoncode , --原因編號
reason, --原因名稱
operator, --操作來源
oldttlid,
newttlid
FROM t_userlog;
如果拷貝到PLSQL或者SQL*PLUS中執行, 就會出現錯誤:
SQL>
FROM t_userlog
ORA-00900: 無效 SQL 語句
SQL>
1.1.2 原因分析
根據報錯資訊來看,是由於SQL語句中的空行引起的。空行的出現可能是由於在某些文字編輯工具中自動加入不可見的換行字元引起的。
1.1.3 處理過程
1、 本可以通過刪除空行的方法來解決,但報表系統中SQL語句何止千行,所以手工刪除的方法實不可取。
2、 使用SQLBLANKLINES引數,即可接受SQL語句中的空行,進而解決此問題:
SQL> SET SQLBLANKLINES ON
SQL>
CREATE OR REPLACE VIEW v_userlog
AS
SELECT
logid, --日誌編號
logtime, --操作時間
phonenumber, --使用者號碼
servicetype, --業務型別
operatetype,
olditem, --修改前狀態
newitem, --修改後狀態
admincode , --客服帳號
reasoncode , --原因編號
reason, --原因名稱
operator, --操作來源
oldttlid,
newttlid
FROM t_userlog;
SQL>
View created
SQL>