【问题标题】:Getting blank result while trying to execute a simple while loop in PL/SQL尝试在 PL/SQL 中执行简单的 while 循环时得到空白结果
【发布时间】:2017-08-12 13:20:33
【问题描述】:

下面是我的 PL/SQL WHILE LOOP 代码:

SET SERVEROUTPUT ON;

DECLARE
l_check NUMBER;
BEGIN
WHILE (l_check < 5)
LOOP
l_check := l_check + 1;
DBMS_OUTPUT.PUT_LINE(l_check);
END LOOP;
END;

当我执行这个 while 循环时,它在消息中显示 PL/SQL 过程已成功完成。但是,尽管使用了 SET SERVEROUTPUT ON,但我得到了一个空白结果;

【问题讨论】:

    标签: oracle plsql


    【解决方案1】:

    您还没有初始化l_check,所以它在第一次在 WHILE 循环中测试时为 NULL。 NULL 不小于 5,因此代码永远不会进入循环。

    尝试在循环之前初始化变量:

    SET SERVEROUTPUT ON;
    
    DECLARE
        l_check NUMBER := 0;
    BEGIN
        WHILE (l_check < 5)
        LOOP
            l_check := l_check + 1;
            DBMS_OUTPUT.PUT_LINE(l_check);
        END LOOP;
    END;
    

    【讨论】:

    • 声明 l_check NUMBER := 1; BEGIN WHILE (l_check
    • @stranger - 重要的变化是`l_check NUMBER := 1;`。给变量赋值意味着当你测试 WHILE 条件时它不为空
    • 初始值(0 或 1 或其他任何值),执行该操作的位置(在 DECLARE 部分或执行部分中),以及何时打印 l_check 的当前值(之前或增加它之后)将几乎没有影响,除了确切打印哪些值。他们都以同样的方式工作。如果您想要从 1 到 4 或从 1 到 5 等的值,您可以调整初始值、PUT_LINE 命令的位置和/或退出条件(l_check &lt; 5 与 &lt;= 5 等.)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    • 1970-01-01
    • 2013-04-03
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    相关资源
    最近更新 更多