儲存過程單引號問題
有網友問一個儲存過程問題,加上下劃線("_")就會報錯,測試了一下確實如此,測試環境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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 達夢儲存過程效能問題定位儲存過程
- mysql多次呼叫儲存過程的問題MySql儲存過程
- mysql儲存過程的引數MySql儲存過程
- MySQL儲存過程的許可權問題MySql儲存過程
- 儲存過程訪問其他使用者的表的問題儲存過程
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- SQL 儲存過程裡呼叫另一個儲存過程SQL儲存過程
- 儲存過程與儲存函式儲存過程儲存函式
- unidac儲存過程儲存過程
- firedac儲存過程儲存過程
- 呼叫儲存過程儲存過程
- mysql 儲存過程MySql儲存過程
- SQLSERVER儲存過程SQLServer儲存過程
- Oracle儲存過程Oracle儲存過程
- 向SQLServer插入單引號問題SQLServer
- mysql無法建立儲存過程問題 ERROR 1307 (HY000)MySql儲存過程Error
- MySQL---------儲存過程MySql儲存過程
- 造數儲存過程儲存過程
- linux呼叫儲存過程Linux儲存過程
- Oracle儲存過程-1Oracle儲存過程
- 儲存過程——遊標儲存過程
- Winform呼叫儲存過程ORM儲存過程
- 儲存過程 傳 datatable儲存過程
- mysql儲存過程整理MySql儲存過程
- JAVA儲存過程(轉)Java儲存過程
- JdbcTemplate調儲存過程JDBC儲存過程
- MySQL之儲存過程MySql儲存過程
- oracle的儲存過程Oracle儲存過程
- MySQL儲存過程in、out、inout引數示例與總結MySql儲存過程
- [20190419]bash單雙引號問題.txt
- SQL Server 資料訪問策略:儲存過程QCSQLServer儲存過程
- go 如何呼叫 sqlserver 帶傳出引數的儲存過程GoSQLServer儲存過程
- Sql儲存過程分頁--臨時表儲存SQL儲存過程
- mybatis儲存過程返回listMyBatis儲存過程
- 資料庫儲存過程資料庫儲存過程
- mysql如何呼叫儲存過程MySql儲存過程
- Mysql 儲存過程的使用MySql儲存過程
- SQL 分頁儲存過程SQL儲存過程
- 原創:oracle 儲存過程Oracle儲存過程