SQLPLUS のループでクエリを実行する必要があります。ループの数は、他の SQL クエリからのものです。したがって、カウントの値を取る変数を宣言する必要があります。ここで、クエリでこの変数を使用したいと思います。どうすれば同じことができるでしょうか。提案してください よろしくお願いします
1929 次
2 に答える
2
質問を正しく理解できれば、SQL*Plus 変数を選択した列と組み合わせて使用して、これを実現できます。
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>
それが役立つことを願っています
于 2010-05-22T17:28:03.940 に答える
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;
/
COUNT_LOOPで何をしたいのかはあまり明確ではありません。FORサイクルに入る前にカウンターのコピーを作成したので、progressive_number変数にもcount_loop変数にも影響を与えることなく、FORサイクル内でCOPY_COUNT_LOOPを使用できます。
于 2010-05-14T11:55:30.073 に答える