儲存過程單引號問題
有網友問一個儲存過程問題,加上下劃線("_")就會報錯,測試了一下確實如此,測試環境trace一下,找出原因
SQL> DECLARE
2 v_num number;
3 v_type varchar2(30);
4 BEGIN
5 v_type:='USER_';
6 dbms_output.put_line(v_type);
7 execute immediate 'select length('||v_type||') from dual' into v_num;
8 dbms_output.put_line(v_num);
9 END;
10 /
USER_
DECLARE
*
ERROR at line 1:
ORA-00904: "USER_": invalid identifier
ORA-06512: at line 7
SQL>
SQL> alter session set sql_trace=TRUE;
Session altered.
SQL> DECLARE
2 v_num number;
3 v_type varchar2(30);
4 BEGIN
5 v_type:='USE_';
6 dbms_output.put_line(v_type);
7 execute immediate 'select length('||v_type||') from dual' into v_num;
8 dbms_output.put_line(v_num);
9 END;
10 /
DECLARE
*
ERROR at line 1:
ORA-00904: "USE_": invalid identifier
ORA-06512: at line 7
SQL> alter session set sql_trace=false;
Session altered.
檢視trace檔案orcl_ora_5092.trc(貼出部分內容)
PARSE ERROR #2:len=29 dep=1 uid=61 ct=3 lid=61 tim=1295570213449697 err=904
select length(USE_) from dual --可以看到具體原因在轉換過程中少了點引號
EXEC #1:c=2000,e=1925,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=1295570213450763
ERROR #1:err=904 tim=429491641
修改儲存過程,執行成功
SQL> set serveroutput on
SQL> DECLARE
2 v_num number;
3 v_type varchar2(30);
4 BEGIN
5 v_type:='USER_';
6 dbms_output.put_line(v_type);
7 execute immediate 'select length('''||v_type||''') from dual' into v_num;
8 dbms_output.put_line(v_num);
9 END;
10 /
USER_
5
PL/SQL procedure successfully completed.
SQL>
總結:
在日常操作中注意oracle內部轉換問題。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25148509/viewspace-715091/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 儲存過程問題。。儲存過程
- oracle儲存過程中單引號及字串拼接處理Oracle儲存過程字串
- 一個儲存過程的問題!儲存過程
- mysql多次呼叫儲存過程的問題MySql儲存過程
- Java呼叫Oracle儲存過程的問題JavaOracle儲存過程
- 儲存過程輸入引數型別定義引起的問題儲存過程型別
- mysql儲存過程的引數MySql儲存過程
- oracle父儲存過程呼叫子儲存過程procedure與輸出引數Oracle儲存過程
- MySQL儲存過程的許可權問題MySql儲存過程
- oracle儲存過程!解決網友問題Oracle儲存過程
- Hibernate呼叫oracle儲存過程的問題Oracle儲存過程
- ORACLE中儲存過程的許可權問題Oracle儲存過程
- MySQL儲存過程中的sql_mode問題MySql儲存過程
- java儲存過程呼叫servlet的授權問題Java儲存過程Servlet
- 自動編號的儲存過程 (轉)儲存過程
- 呼叫者儲存過程訪問許可權問題儲存過程訪問許可權
- 帶輸出引數的儲存過程儲存過程
- MySQL儲存過程詳解 mysql 儲存過程MySql儲存過程
- 儲存過程儲存過程
- 簡單的造數儲存過程儲存過程
- mysql 儲存過程簡單例項MySql儲存過程單例
- mysql儲存過程簡單例項MySql儲存過程單例
- 簡單的儲存過程分頁儲存過程
- 簡單的分頁儲存過程儲存過程
- 解決儲存過程擷取錯誤的問題儲存過程
- 儲存過程訪問其他使用者的表的問題儲存過程
- MySQL 儲存過程引數IN OUT INOUT對比MySql儲存過程
- Java呼叫儲存過程(帶輸出引數)Java儲存過程
- 動態呼叫帶引數的儲存過程儲存過程
- oracle儲存過程將引數字串分割sqlOracle儲存過程字串SQL
- 拋磚引玉——通用分頁儲存過程儲存過程
- SQL 儲存過程裡呼叫另一個儲存過程SQL儲存過程
- MySQL儲存過程詳解 mysql 儲存過程linkMySql儲存過程
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- 向SQLServer插入單引號問題SQLServer
- 偶發的儲存過程呼叫效能問題的一次調優過程儲存過程
- 儲存過程與儲存函式儲存過程儲存函式
- Oracle儲存過程Oracle儲存過程