【发布时间】:2011-05-06 16:39:50
【问题描述】:
我想要一个代码示例。
我正在尝试这个:
DECLARE
var NUMBER;
BEGIN
/*N.B. for loop variables in pl/sql are new declarations, with scope only inside the loop */
FOR var IN 0 .. 10 LOOP
DBMS_OUTPUT.put_line(var);
END LOOP;
IF (var IS NULL) THEN
DBMS_OUTPUT.put_line('var is null');
ELSE
DBMS_OUTPUT.put_line('var is not null');
END IF;
END;
并且没有输出(尽管我知道这不是无限循环)。 为什么这个不打印?
编辑:非打印代码已通过数据库管理器界面修复。
【问题讨论】:
-
你想达到什么目的?听起来不是很有意义,因为通常您会尝试避免在存储过程中出现无限循环。
-
我确实得到了输出:
0 1 2 3 4 5 6 7 8 9 10 var is null -
Jay S 的评论在这里几乎肯定是正确的——您需要在调用 PL/SQL 块之前启用 serveroutput。
-
听起来您的问题与无限循环无关,只是您认为这可能是您看不到输出的原因。建议将问题的标题更改为更合适的名称,例如“为什么这个 PL/SQL 块不产生输出?”。 Jay S 的回答可能与您的实际问题最相关。
-
这是两个独立的问题(严重地)合二为一。不生产输出块被消除。 “固定”问题标题也被编辑,因为它忽略了循环问题的有用答案。
标签: sql oracle stored-procedures