0

明確な理由はありませんが、次のエラーが発生しました。

ORA-00942: 表またはビューが存在しません

デバッグカーソルが行に設定されています:

 SELECT AMD.MSG_DATE

次のストアド プロシージャから:

CREATE OR REPLACE PROCEDURE CTI_MATRIX.AMD_NEEDMSG (v_CRN IN VARCHAR2)
IS

return_flag INTEGER;
row_cnt INTEGER;
number_of_days INTEGER;
var_DATE DATE;

CURSOR ACCNTSEARCH (P_CRN IN VARCHAR2) IS
    SELECT AMD.MSG_DATE    
       FROM TBL_AMD_NEEDMSG AMD
      WHERE AMD.PHONE_NUMBER = P_CRN;

BEGIN

OPEN ACCNTSEARCH(v_CRN);
FETCH ACCNTSEARCH INTO var_DATE;
IF ACCNTSEARCH%NOTFOUND 
THEN
    row_cnt := 0;
ELSE
    row_cnt :=1;
END IF;
CLOSE ACCNTSEARCH;

IF (row_cnt = 0)
THEN
        INSERT INTO TBL_AMD_NEEDMSG (PHONE_NUMBER, MSG_DATE) VALUES (v_CRN , SYSDATE); 
        return_flag := 1;
ELSE
    SELECT SYSDATE-var_DATE INTO number_of_days FROM dual;

     IF (number_of_days>7)
    THEN 
        UPDATE TBL_AMD_NEEDMSG SET MSG_DATE = SYSDATE WHERE PHONE_NUMBER = v_CRN;
        return_flag := 1;
    ELSE
         return_flag := 0;
    END IF;

END IF;    

COMMIT;

dbms_output.put_line('result='||return_flag );    
EXCEPTION
WHEN OTHERS THEN
    ROLLBACK;
    --raise_application_error(-20001,'An error was encountered '||SQLERRM);


END AMD_NEEDMSG;
/

ところで、ストアド プロシージャは次の呼び出しブロックを介して呼び出されます。

DECLARE 
 V_CRN VARCHAR2(32767);

BEGIN 
 V_CRN := '5457648547567';
 CTI_MATRIX.AMD_NEEDMSG ( V_CRN );
 DBMS_OUTPUT.Put_Line('');

 COMMIT; 
END;

テーブルが確実に存在し、次のステートメントがあるため、絶対に困惑します。

SELECT AMD.MSG_DATE    
       FROM TBL_AMD_NEEDMSG AMD
      WHERE AMD.PHONE_NUMBER =  '85100000000';

問題なくレコードセットの結果をフェッチします。

助けてください。

4

1 に答える 1

0

スキームは CTI_MATRIX と同じですか? 私が見るように、このスキームでストアドプロシージャを作成するため、CTI_MATRIXユーザーの下でselectを実行しています。幸運を

于 2013-01-14T06:35:03.873 に答える