在SQL Plus中运行查询

时间:2010-03-17 05:44:48

标签: oracle sqlplus

我必须在SQLPLUS的循环中运行查询。并且循环的计数来自其他一些SQL查询。所以我必须声明一个变量,它将取count的值。现在我想在我的查询中使用这个变量。我怎么能这样做。请建议我 提前致谢

2 个答案:

答案 0 :(得分: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> 

希望有所帮助

答案 1 :(得分: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循环之前,我已经复制了计数器,因此您可以在FOR循环中使用COPY_COUNT_LOOP,而不会影响progressive_number变量和count_loop变量。