首页 文章

错误:00103 for plsql procedure

提问于
浏览
1

我收到的错误如下:

错误(5,1):PLS-00103:遇到以下其中一项时遇到符号“DECLARE”:开始函数编译指示过程子类型<标识符> <a double -quoted delimited-identifier>当前游标删除存在于外部之前language将“begin”符号替换为“DECLARE”以继续 . 错误(5,1):PLS-00103:遇到以下其中一项时遇到符号“DECLARE”:begin function pragma procedure子类型<an identifier> <a double -quoted delimited-identifier>当前游标删除存在于外部语言之前符号“begin”代替“DECLARE”继续 .

我的代码是:

CREATE OR REPLACE PROCEDURE procExplicitCursorAccountSlct
AS
DECLARE 
  CURSOR C1 IS SELECT * FROM ACCOUNT;
BEGIN
  OPEN C1;
  FOR i in C1 LOOP
  FETCH C1 INTO ID,ACCOUNTTYPE,BALANCE;
  EXIT WHEN C1%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE(ID||'-'||ACCOUNTTYPE||'-'||BALANCE);
    DBMS_OUTPUT.PUT_LINE(C1%ROWCOUNT);
  END LOOP;  
  CLOSE C1;    
END;

2 回答

  • 1

    试试这个并查看内联注释以进行修改 . 希望能帮助到你 .

    CREATE OR REPLACE
    PROCEDURE procExplicitCursorAccountSlct
    AS
      CURSOR C1
      IS
        SELECT
          *
        FROM
          ACCOUNT;
    --Variabke declaration was missing
      ID          NUMBER;
      ACCOUNTTYPE VARCHAR2(100);
      BALANCE     NUMBER;
      --Variabke declaration was missing
    BEGIN
      OPEN C1;
      LOOP
        FETCH
          C1
        INTO
          ID,
          ACCOUNTTYPE,
          BALANCE;
        EXIT
      WHEN C1%NOTFOUND;
        DBMS_OUTPUT.PUT_LINE(ID||'-'||ACCOUNTTYPE||'-'||BALANCE);
        DBMS_OUTPUT.PUT_LINE(C1%ROWCOUNT);
      END LOOP;
      CLOSE C1;
    END;
    
  • 0

    使用隐式循环(并删除 DECLARE )可以使方法更简单:

    CREATE OR REPLACE PROCEDURE procExplicitCursorAccountSlct
    AS
      CURSOR C1 IS SELECT * FROM ACCOUNT;
    BEGIN
      FOR i in C1 LOOP
        DBMS_OUTPUT.PUT_LINE(i.ID||'-'||i.ACCOUNTTYPE||'-'||i.BALANCE);
        DBMS_OUTPUT.PUT_LINE(C1%ROWCOUNT);
      END LOOP;  
    END;
    

相关问题