Oracle存储过程问题 - IN和OUT变量是无效的标识符

问题描述:

我想在Oracle中创建一个存储过程,当我运行命令SQL>启动G:\ ORACLE \ totalsales.sql它显示的错误下Oracle存储过程问题 - IN和OUT变量是无效的标识符

给出
ERROR at line 6: 
ORA-06550: line 6, column 47: 
PL/SQL: ORA-00904: "CID": invalid identifier 
ORA-06550: line 6, column 4: 
PL/SQL: SQL Statement ignored 
ORA-06550: line 20, column 3: 
PLS-00201: identifier 'TOT' must be declared 
ORA-06550: line 20, column 3: 
PL/SQL: Statement ignored 

这是我的存储过程代码。请看看,并建议我点我失踪。

CREATE OF REPLACE PROCEDURE TotalSales (CID IN NUMBER, TOT OUT NUMBER) 
IS 
    DECLARE 
     P Sales.Price%TYPE; 
     T NUMBER(10,2) := 0; 

     CURSOR CUR_SALES IS 
      SELECT Price FROM Sales WHERE EmployeeID = CID; 

    BEGIN 
     OPEN CUR_SALES; 
     LOOP 
      FETCH CUR_SALES INTO P; 
      IF CUR_SALES%ROWCOUNT = 0 THEN 
       RAISE_APPLICATION_ERROR(-20020, 'No data found.'); 
      END IF; 
      EXIT WHEN CUR_SALES%NOTFOUND; 
      T := T + P; 
     END LOOP; 
     CLOSE CUR_SALES; 

     TOT := T; 

    EXCEPTION 
     WHEN OTHERS THEN 
     RAISE_APPLICATION_ERROR(-20001,'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM); 

END TotalSales; 
/

变化

CREATE OF REPLACE 

CREATE OR REPLACE 

:)

,并删除了申报。 IS隐式标记DECLARE块的开始。如果你想保留它,你需要用一个额外的结束关闭它 - 也需要遵循开始。

+0

Jens Krogsboell - 浪费了我所有的时间在早上查看代码,每次读OF都是如此愚蠢。谢谢你,我的朋友。让我试试这个。 – 2014-09-29 07:23:38

+0

Jens Krogsboell - 是的DECLARE不应该在那里实际上迫使我试用各种可能性来修复变量的bug :) – 2014-09-29 07:25:59

+0

我知道 - 我们倾向于看到我们所期望的:) – 2014-09-29 13:15:16