Выполнение запроса в SQL Plus - PullRequest
2 голосов
/ 17 марта 2010

Я должен выполнить запрос в цикле в SQLPLUS. и счетчик цикла поступает из какого-то другого запроса SQL. Поэтому я должен объявить переменную, которая будет принимать значение count. Теперь я хочу использовать эту переменную в своем запросе. Как бы я мог сделать то же самое. Пожалуйста, предложите мне Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 22 мая 2010

Если я правильно понимаю вопрос, вы можете использовать переменную 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> 

Надеюсь, что поможет

0 голосов
/ 14 мая 2010
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, не затрагивая ни переменную progress_number, ни переменную count_loop.

...