2017-03-08 6 views
0

For 루프 내에 변수를 표시하는 방법은 무엇입니까? 전PL/SQL SQL 개발자에서 for 루프의 변수를 표시하는 방법

set serveroutput on; 

BEGIN 
    DBMS_OUTPUT.put_line('Starting'); 

    FOR r IN (SELECT owner, table_name FROM all_tables WHERE owner in ('ABC','CDE')) 
    loop 
     DBMS_OUTPUT.put_line('owner'); 
     EXECUTE IMMEDIATE 'grant select on '||r.owner||'.'||r.table_name||' to XXXX'; 
    end loop; 

    DBMS_OUTPUT.put_line('Ending'); 
END; 

를 들어

내가 출력 아래 얻고는

여기에 수행되는 모든 변경 사항을 인쇄되지 않습니다 루프 내의 하나

PL/SQL procedure successfully completed. 

Starting 
Ending 

인쇄?

+0

그것은 선택 사항이 어떤 값을 반환하지 않는 것을 할 수 이유가 무엇 인 쿼리 결과? – TheName

+0

#CuriousProgrammer 따옴표를 제거하여 답변을 수정하십시오. DBMS_OUTPUT.put_line (R.owner); 하지만 아무것도 인쇄하지 않는다면 select 문이 어떤 행도 반환하지 않는다는 것을 의미합니다. 쿼리의 결과는 무엇입니까? – TheName

+0

DBMS_OUTPUT.put_line ('R.owner'); DBMS_OUTPUT.put_line (R.owner); 둘 다 작동하지 않습니다 두 소유자를 반복하는 경우 참조해야합니다 – CuriousProgrammer

답변

0

이 실패 할 경우는 다음이 SELECT owner, table_name FROM all_tables WHERE owner in ('ABC','CDE') 아무것도 반환하지 않음을 의미하고 루프 문으로하지 않을

set serveroutput on; 
    BEGIN 
     DBMS_OUTPUT.put_line('Starting'); 
     FOR R IN (SELECT owner, table_name FROM all_tables WHERE owner in ('ABC','CDE')) 
     loop 
     DBMS_OUTPUT.put_line(r.owner); 
    EXECUTE IMMEDIATE 'grant select on '||R.owner||'.'||R.table_name||' to XXXX'; 
     end loop; 
     DBMS_OUTPUT.put_line('Ending'); 
    END; 
+0

TheName이 존재합니다. 독립 실행 형 쿼리를 실행하면 결과를 가져옵니다. – CuriousProgrammer