我创建了个存储过程,提示编译错误,但是用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 /*如果存在一个表,则删除该表*/
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会显示那行错误,但是现在却显示用法,不知道为什么?请高手指点。
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
你这样show error也没多大作用的
已写入 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