2010-03-17 5 views
2

SQLPLUS의 루프에서 쿼리를 실행해야합니다. 루프의 수는 다른 SQL 쿼리에서 발생합니다. 그래서 count의 값을 취할 변수를 선언해야합니다. 이제 쿼리에서이 변수를 사용하고 싶습니다. 어떻게 내가 똑같이 할 수 있겠 어. 당신이 COUNT_LOOP 함께 할 싶은 것이 너무 분명하지 않다 나에게 미리SQL Plus에서 쿼리 실행

답변

0
BEGIN 
    DECLARE 
     count_loop   NUMBER DEFAULT 0; -- counter coming from some other SQL query... 
     progressive_number NUMBER DEFAULT 0; 
     copy_count_loop  NUMBER DEFAULT 0; 
    BEGIN 
     -- calculus generating the COUNT_LOOP value > 0. 
     copy_count_loop := count_loop; 

     FOR progressive_number IN 1 .. count_loop 
     LOOP 
     -- do your operations using copy_count_loop 
     END LOOP; 
    END; 
END; 
/

에서 감사를 제안하십시오. FOR주기에 들어가기 전에 카운터 사본을 만들었으므로 progressive_number 변수 또는 count_loop 변수에 영향을주지 않고 FOR 사이클 내에 COPY_COUNT_LOOP를 사용할 수 있습니다.

2

내가 제대로 질문을 이해한다면, 당신이 달성하기 위해 선택한 열이 결합 된 SQL의 * 플러스 변수를 사용할 수 있습니다 :

을하는 데 도움이

SQL> undefine loop_ctr 
SQL> column loop_ctr new_value loop_ctr noprint 
SQL> select 5 AS loop_ctr from dual; 


SQL> set serveroutput on 
SQL> begin 
    2 for i in 1..&&loop_ctr 
    3 loop 
    4 dbms_output.put_line('i = ' || i); 
    5 end loop; 
    6 end; 
    7/
old 2: for i in 1..&&loop_ctr 
new 2: for i in 1..   5 
i = 1 
i = 2 
i = 3 
i = 4 
i = 5 
SQL> 

희망을

관련 문제