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
2
A
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