2017-01-22 5 views
0

내 프로시 저는 변수에 할당 될 입력 매개 변수로 문자열 (전자 메일 본문 메시지)을 수신합니다. 작은 따옴표와 앰퍼샌드 같은 문자를 포함 할 수 있습니다. 이 상황을 어떻게 처리하고 clob 변수에 문자열을 할당 할 수 있습니까?변수에 단일, 앰퍼샌드 qoutes와 같은 문자가 포함 된 문자열 저장

SET SERVEROUTPUT ON 

DECLARE 

email_body CLOB; 

BEGIN 

email_body:=to_clob('Hel's Message'); 

DBMS_OUTPUT.PUT_LINE(length(email_body)); 

EXCEPTION 
WHEN OTHERS THEN 
DBMS_OUTPUT.PUt_LINE(SQLCODE||' '||SQLERRM); 

END; 

Error:

ORA-06550: line 7, column 22: PLS-00103: Encountered the symbol "S" when expecting one of the following:

+3

프로 시저에서 문자열을 입력 매개 변수로 가져 오는 경우 특수 작업을 수행 할 필요가 없습니다. 모든 인용/이스케이프는 호출 코드에서 수행됩니다. –

답변

0

는 다음을 시도 할 수 있습니다 : 여기

SET SERVEROUTPUT ON 
/* disable variable substitution */ 
SET DEFINE OFF 

DECLARE 
email_body CLOB; 
BEGIN 
email_body:=to_clob(q'[Hel's M&ssage]'); /* Q operator to avoid issues with quotes */ 

    DBMS_OUTPUT.PUT_LINE(length(email_body)); 

EXCEPTION 
    WHEN OTHERS THEN 
    DBMS_OUTPUT.PUt_LINE(SQLCODE||' '||SQLERRM); 
END; 
/

내가 따옴표와 함께 문자열을 처리하는 변수 치환과 오라클 Q quote operator을 방지하기 위해 SET DEFINE OFF를 사용합니다.