我必须在 SQLPLUS 的循环中运行一个查询。并且循环计数来自其他一些 SQL 查询。所以我必须声明一个变量,它将采用计数值。现在我想在我的查询中使用这个变量。我怎么能做同样的事情。请建议我提前谢谢
问问题
1929 次
2 回答
2
If I understand the question correctly, you can use a SQL*Plus variable coupled with a selected column to accomplish this:
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>
Hope that helps
于 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 循环之前,我已经制作了计数器的副本,因此您可以在 FOR 循环中使用 COPY_COUNT_LOOP ,而不会影响progressive_number 变量,也不会影响count_loop 变量。
于 2010-05-14T11:55:30.073 回答