2010-03-17 4 views
2

Je dois exécuter une requête dans la boucle dans SQLPLUS. et le nombre de boucles provient d'une autre requête SQL. Je dois donc déclarer une variable qui prendra la valeur de count. Maintenant, je veux utiliser cette variable dans ma requête. Comment pourrais-je faire la même chose? S'il vous plaît me suggérer Merci à l'avanceExécution d'une requête dans SQL Plus

Répondre

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; 
/

Il est pas si clair que voulez-vous faire avec COUNT_LOOP. J'ai fait une copie du compteur avant d'entrer dans le cycle FOR, donc vous pouvez utiliser COPY_COUNT_LOOP dans le cycle FOR, sans affecter ni la variable progressive_number, ni la variable count_loop.

2

Si je comprends bien la question, vous pouvez utiliser un * Plus SQL variables couplée à une colonne sélectionnée pour accomplir ceci:

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> 

espoir qui aide