2014-03-06 31 views
0

我的程序中有一個代碼,看起來像這樣。但是當我執行這個代碼時,我得到如下所述的錯誤。動態執行立即查詢的問題

,我得到了錯誤報告:

錯誤報告 - ORA-06553:PLS-306:錯號碼或類型的呼叫 'OGC_Y' ORA-06512的論點:在第20行 06553. 00000 - 「PLS-%S:%S」 *原因:
*操作:

錯誤有事情做與primary_flag = "Y" < - 這一點。我還可以在字符串中寫primary_flag ='Y'嗎? 在我的情況下,動態查詢是必需的。

我的代碼是:

DECLARE 

    p_assignee_id NUMBER := 10153; 

    time_stamp timestamp := '12-DEC-2011'; 

    create_task_view_sql VARCHAR2(4000); 

    BEGIN 

     create_task_view_sql:= 
             'select unique cp.sub_last_name 
              from cs_sr_contact_points_v cp 
              where cp.incident_id = 55500 
              and cp.contact_phone is not null 
              and primary_flag = "Y"'; 

     dbms_output.put_line(create_task_view_sql); 

     execute immediate create_task_view_sql; 


END; 
+0

你真的需要動態sql嗎? –

+0

[ora-06553 pls-306在調用'ogc \ _x'時錯誤的數字或參數類型的可能的重複](http://stackoverflow.com/questions/13687766/ora-06553-pls-306-wrong-number -or-類型-的論點入呼叫到OGC-x)的 – user272735

回答

4

要嵌入在帶引號的字符串引用的字符串,用兩個報價:

'...and primary_flag=''Y'''; 

或者您可以使用較新的q'語法來避免加倍嵌入的報價:

q'[...and primary_flag='Y']';