2014-03-06 3 views
0

프로 시저에 다음과 같은 코드가 있습니다. 하지만이 코드를 실행하면 아래에 설명 된 오류가 발생합니다.동적 실행 즉치 쿼리 관련 문제

내가 가진 오류 리포트 :

오류 보고서 - ORA-06553 : PLS-306 : 라인 (20) 에서 : 잘못된 번호 또는 'OGC_Y' ORA-06512에 대한 호출에서 인수의 종류 06553. 00000 - "PLS- %의 %의" * 원인 :
* 작업 :

오류가 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

'ogc \ _x'호출에서 [ora-06553 pls-306 잘못된 번호 또는 인수 유형의 가능한 중복] (http://stackoverflow.com/questions/13687766/ora-06553-pls-306-wrong-number) -or-types-of-arguments-in-ogc-x) – user272735

답변

4

는, 인용 된 문자열에 인용 된 문자열을 포함 두 단일 따옴표를 사용하려면 :

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

을 아니면 피하기 위해 새로운 q' 구문을 사용할 수 있습니다 내장 된 따옴표를 두 배로 늘림 :

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