2

パッケージ内でOracleストアドプロシージャを呼び出そうとすると、次のエラーが発生します:SQLエラー:ORA-06576:有効な関数またはプロシージャ名ではありません

私はSQLDeveloperを使用しており、これは私が使用しているコマンドです

call WEATHERDATAUPDATES.GetLastRunDate("WeatherData")

パッケージ/手順は次のとおりです

PACKAGE BODY WEATHERDATAUPDATES AS

  PROCEDURE GetLastRunDate(PROCESS IN VARCHAR2, RUNDATE OUT DATE) AS
  BEGIN
    SELECT rundate FROM Marcie.last_rundate
    where process = PROCESS;
  END GetLastRunDate;

END WEATHERDATAUPDATES;

私はOracleパッケージにかなり慣れていないので、何が欠けているのかわかりません。検索してみましたが、うまくいく答えが見つかりません。誰かが私が欠けているものを教えてもらえますか?

ありがとう、マーシー

4

3 に答える 3

3

GetLastRunDate には 2 つのパラメーター (プロセスと実行日) がありますが、呼び出しで渡すのは 1 つだけです。

2 番目のパラメーターを渡したいので、1 つのオプションは、それを機能させて rundate を返すことです。

PACKAGE BODY WEATHERDATAUPDATES AS

  FUNCTION GetLastRunDate(PROCESS IN VARCHAR2)
  RETURN DATE
  AS
     lDate DATE;
  BEGIN
    SELECT rundate
    INTO   lDate
    FROM   Marcie.last_rundate
    where  process = PROCESS;

    RETURN lDate;
  END GetLastRunDate;

END WEATHERDATAUPDATES;
于 2012-08-27T14:21:37.583 に答える
3

手順では、取得した値をどこにも配置していません。次を使用する必要がありますINTO

...    
   PROCEDURE GetLastRunDate(PROCESS IN VARCHAR2, RUNDATE OUT DATE) AS
   BEGIN
     SELECT rundate 
     INTO RUNDATE 
     FROM Marcie.last_rundate  
     where process = PROCESS;
   END GetLastRunDate;
...

呼び出しで、out パラメータの変数を渡しますRUNDATE OUT DATE

呼び出しを PL/SQL ブロックに入れます。

DECLARE
    lastRunDate DATE;
BEGIN
    WEATHERDATAUPDATES.GetLastRunDate("WeatherData",lastRunDate);   
    -- do something with lastRunDate
END;
于 2012-08-27T14:36:18.710 に答える
2

パッケージの BODY を表示GetLastRunDateしましたが、パッケージの仕様で宣言されている仕様を確認してください。

于 2012-08-28T03:29:11.620 に答える