0

プロシージャを実行しているときに、データが見つからないというエラーに直面しています。しかし、行は実際にはテーブルに存在します。これで私を助けてください。

**Code**
*CREATE OR REPLACE PACKAGE BODY SCOTT."TRUNC_ANALYZE_PKG"
as
PROCEDURE TRUNC_TABLE(v_owner in varchar2, v_tab_name IN VARCHAR2) AS
    t_owner varchar2(30) ;
BEGIN
   -- Truncate only EMP tables
   SELECT     owner
     INTO     t_owner
     FROM     all_tables
    WHERE     table_name = upper(v_tab_name)
                and owner in ('EMP') ;
execute immediate ('TRUNCATE TABLE EMP.'||upper(v_tab_name)) ;
  EXCEPTION
      WHEN NO_DATA_FOUND
      THEN
              RAISE_APPLICATION_ERROR(-20023, v_tab_name||' Schema name or Table name is not valid. '||SUBSTR(SQLERRM,1,500));
      WHEN OTHERS
      THEN
              RAISE_APPLICATION_ERROR(-20023, v_tab_name||SUBSTR(SQLERRM,1,500));
END TRUNC_TABLE;
PROCEDURE ANALYZE_TABLE(v_owner in varchar2, v_tab_name IN VARCHAR2) AS
 v_tab_owner varchar2(30) := upper(v_owner) ;
 v_tab_name2 varchar2(30) := upper(v_tab_name) ;
BEGIN
dbms_ddl.analyze_object('TABLE',v_tab_owner,v_tab_name2,'ESTIMATE','',20,'');
exception
   when others then
      /* Raise the error to the calling proc id
required. */
      raise;
END ANALYZE_TABLE;
END TRUNC_ANALYZE_PKG;
/*

エラーメッセージ:

SQL> exec SCOTT.DBA_PKG.TRUNC_TABLE('EMP','EMPLOYEE');
BEGIN DBA_PKG.TRUNC_TABLE('EMP','EMPLOYEE'); END;

*
ERROR at line 1:
ORA-20023: STG_FIRMINFO Schema name or Table name is not valid. ORA-01403: no
data found
ORA-06512: at "EIB_USER.DBA_PKG", line 21
ORA-06512: at line 1

しかし、実際には EMPLOYEE テーブルは all_tables に存在します。この例外がキャッチされる理由をクラックすることはできません。これで私を助けてください。

ありがとう、プーヴァ。

4

1 に答える 1