Мне нужно запустить запрос в цикле в SQLPLUS. и цикл цикла исходит из некоторого другого SQL-запроса. Поэтому я должен объявить переменную, которая примет значение count. Теперь я хочу использовать эту переменную в моем запросе. Как я смогу сделать то же самое. Пожалуйста, предложите мне Заранее спасибоЗапуск запроса в SQL Plus
2
A
ответ
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, поэтому вы можете использовать COPY_COUNT_LOOP внутри цикла FOR, не затрагивая ни переменную progressive_number, ни переменную count_loop.
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>
Надежды, что помогает