【问题标题】:PL/SQL implementing while loop PLs:00103PL/SQL 实现 while 循环 PLs:00103
【发布时间】:2013-12-22 02:58:31
【问题描述】:

我试图实现一个 while 循环,我认为我的代码还可以。我的代码出了什么问题?在实现我的while循环时我的语法有什么问题?我是 PL/SQL 新手

CREATE OR REPLACE
    PROCEDURE "WHILELOOPTEST" (LIMITLOOP IN NUMBER)
    AS
    BEGIN
    DECLARE MYCOUNTER NUMBER :=0;
        WHILE MYCOUNTER < LIMITLOOP  
    LOOP
     MYCOUNTER:= MYCOUNTER + 1;
    DBMS_OUTPUT.PUT_LINE('Hello World' || MYCOUNTER);
    END LOOP;
    END;

【问题讨论】:

  • 作为初学者,请记住这一点:如果您在数据库服务器上执行循环,您可能做错了什么。尝试做所有事情,就好像 FOR 和 WHILE 不存在一样。

标签: sql stored-procedures plsql oracle11g plsqldeveloper


【解决方案1】:

只是结构的问题。存储过程没有 DECLARE 关键字。

CREATE OR REPLACE
PROCEDURE "WHILELOOPTEST"(
    LIMITLOOP IN NUMBER)
AS
  MYCOUNTER NUMBER :=0;
BEGIN
  WHILE MYCOUNTER < LIMITLOOP
  LOOP
    MYCOUNTER:= MYCOUNTER + 1;
    DBMS_OUTPUT.PUT_LINE('Hello World' || MYCOUNTER);
  END LOOP;
END;

【讨论】:

  • 我明白了。我遇到了这个错误 ORA-01741: 非法零长度标识符是什么意思?
【解决方案2】:

您不需要在存储过程中使用DECLARE。试试这样,

CREATE OR REPLACE
PROCEDURE WHILELOOPTEST(
          LIMITLOOP IN NUMBER)
AS 
     MYCOUNTER NUMBER :=0;
BEGIN
     WHILE MYCOUNTER < LIMITLOOP  
     LOOP
          MYCOUNTER:= MYCOUNTER + 1;
          DBMS_OUTPUT.PUT_LINE('Hello World' || MYCOUNTER);
     END LOOP;
END;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多