我创建了个存储过程,提示编译错误,但是用SHOW ERRORS却没显示错误,请看代码:SQL> LIST
  1  /*如果存在一个表,则删除该表*/
  2  CREATE OR REPLACE PROCEDURE pro_droptable
  3  (
  4   tb_name IN VARACHAR2
  5  )
  6  IS
  7    c_num NUMBER(9);
  8  BEGIN
  9    SELET COUNT(*) INTO c_num FROM user_tables WHERE table_name=ta_name;
 10    IF c_num<>0 THEN
 11       DROP TABLE ta_name;
 12       DBMS_OUTPUT.PUT_LINE('存在'||ta_name||'表,并已删除,请创建新表');
 13    ELSE
 14       DBMS_OUTPUT.PUT_LINE('不存在该表,请创建新表');
 15    END IF;
 16* END pro_droptable;
SQL> /警告: 创建的过程带有编译错误。SQL> SHOW ERRORS;
用法: SHOW ERRORS [{ FUNCTION | PROCEDURE | PACKAGE |
   PACKAGE BODY | TRIGGER | VIEW 
   | TYPE | TYPE BODY | DIMENSION 
   | JAVA SOURCE | JAVA CLASS } [schema.]name]这个过程我知道错在哪里,但一般情况下show errors会显示那行错误,但是现在却显示用法,不知道为什么?请高手指点。

解决方案 »

  1.   


     SHOW ERROR --没有S--或者查询下面这个表也行
    [SYS@orcl] SQL>desc user_errors;
     名称                                      是否为空? 类型
     ----------------------------------------- -------- ----------------------------
     NAME                                      NOT NULL VARCHAR2(30)
     TYPE                                               VARCHAR2(12)
     SEQUENCE                                  NOT NULL NUMBER
     LINE                                      NOT NULL NUMBER
     POSITION                                  NOT NULL NUMBER
     TEXT                                      NOT NULL VARCHAR2(4000)
     ATTRIBUTE                                          VARCHAR2(9)
     MESSAGE_NUMBER                                     NUMBER
      

  2.   

    许多关键字都写错了
    你这样show error也没多大作用的
      

  3.   

    SQL>  SHOW ERRORS PROCEDURE  pro_droptable;
      

  4.   

    SQL> edit
    已写入 file afiedt.buf  1    CREATE OR REPLACE PROCEDURE pro_droptable
      2      (
      3       ta_name IN VARCHAR2
      4      )
      5      IS
      6        c_num NUMBER(9);
      7      BEGIN
      8        SELEcT COUNT(*) INTO c_num FROM user_tables WHERE table_name=ta_name;
      9       IF c_num<>0 THEN
     10       begin
     11          execute immediate 'DROP TABLE '||ta_name;
     12          DBMS_OUTPUT.PUT_LINE('存在'||ta_name||'表,并已删除,请创建新表');
     13       end;
     14       ELSE
     15          DBMS_OUTPUT.PUT_LINE('不存在该表,请创建新表');
     16       END IF;
     17*   END pro_droptable;
    SQL> /过程已创建。SQL> show error
    没有错误。
    SQL> select * from tab;TNAME                          TABTYPE  CLUSTERID
    ------------------------------ ------- ----------
    T                              TABLESQL> exec pro_droptable;
    BEGIN pro_droptable; END;      *
    第 1 行出现错误:
    ORA-06550: 第 1 行, 第 7 列:
    PLS-00306: 调用 'PRO_DROPTABLE' 时参数个数或类型错误
    ORA-06550: 第 1 行, 第 7 列:
    PL/SQL: Statement ignored
    SQL> exec pro_droptable('t');PL/SQL 过程已成功完成。SQL> select * from tab;TNAME                          TABTYPE  CLUSTERID
    ------------------------------ ------- ----------
    T                              TABLESQL> exec pro_droptable('T');PL/SQL 过程已成功完成。SQL> select * from tab;TNAME                          TABTYPE  CLUSTERID
    ------------------------------ ------- ----------
    BIN$j/G6GzuWTciCfbYqWKWPsg==$0 TABLE
      

  5.   

    我知道我的代码有很多错误,也知道错在哪里,我就是想SHOW ERRORS看下能否显示错误信息。