2013-01-18 9 views
4

을 입력하면 EXECUTE IMMEDIATE만으로 여러 줄과 줄을 가진 EXECUTE IMMEDIATE를 수행하고이를 변수에 할당하는 올바른 방법일까요? 예제를 살펴 보았지만 선을 올바르게 연결했는지 확신 할 수 없습니까?여러 줄의 열을 입력하고

sql_stmt  VARCHAR2(200); 

sql_stmt:='INSERT INTO (STORECODE, TILLID, TRANSACTIONNR, TRADINGDATE, TRANSTYPE, ' || 
      'OPERATORCODE TRAININGMODE, VOIDED, VALUEGROSS, VALUENETT, VALUEDUE) ' || 
      ‘VALUES (:1,:2,:3,:4,:5,:6,:7,:8,:9,:10)’; 
      EXECUTE IMMEDIATE sql_stmt USING sSTORECODE………………………………………..fGROSS_AMOUNT, 
     ‘0’; 

답변

11

문자열은 Oracle에서 여러 줄로 입력 할 수 있습니다. 연결 (||)를 사용하여

sql_stmt := 'INSERT INTO (STORECODE, TILLID, TRANSACTIONNR, TRADINGDATE, 
          TRANSTYPE, OPERATORCODE TRAININGMODE, VOIDED, 
          VALUEGROSS, VALUENETT, VALUEDUE) 
        VALUES (:1,:2,:3,:4,:5,:6,:7,:8,:9,:10)'; 

EXECUTE IMMEDIATE sql_stmt USING p1, p2... p10; 

여러 문자열 물론 잘 작동 : 따라서, 당신은 간단하게 작성할 수 있습니다.

2
set serveroutput on size unlimited; 

declare 
str_ varchar(1000 char); 
date_ date; 


begin 
    --str_ := 'select sysdate' || chr(10); 
    --str_ := str_ || 'from dual'; 
    str_ := 'select sysdate /* ''comment'' */ 
      from dual'; 

    execute immediate str_ 
    into date_; 

    dbms_output.put_line(date_); 


end;