我在oracle10g中创建了一个过程,我的存储过程的语法是:
create procedure procname is begin --query end;
在执行此过程时,我没有使用or replace
关键字。它给了我这样的信息:过程创建时出错。
它到底意味着我的过程是否已创建,如果已创建,它将取代我以前的过程,因为在执行当前过程之前,我有相同的过程名称。
错误消息:procedure created with error.
表示您的过程已创建,但您将无法运行它,因为它有错误。
您可以使用:
SHOW ERRORS;
在CREATE PROCEDURE
DDL语句之后立即显示这些错误,或者您可以查询:
SELECT *
FROM user_errors
WHERE name = 'YOUR_PROCEDURE_NAME';
如果您想重新创建程序,请使用:
DROP PROCEDURE your_procedure_name;
然后使用CREATE PROCEDURE ...
或使用:
CREATE OR REPLACE PROCEDURE ...
过程已经创建(正如消息所说(,但它有错误。
没有其他具有该名称的过程(或对象(,因为你会得到";ORA-00955:名称已被现有对象使用";错误消息:
这是第一个程序,它被成功创建:
SQL> create procedure procname is
2 begin
3 null;
4 end;
5 /
Procedure created.
运行另一个create procedure
,使用相同的过程名称:
SQL> create procedure procname is
2 begin
3 null;
4 --
5 null;
6 end;
7 /
create procedure procname is
*
ERROR at line 1:
ORA-00955: name is already used by an existing object
SQL>
如果";新的";程序有错误(缺少INTO
子句和,其中用于放置该值(?什么都没有,还是同样的消息:
SQL> create procedure procname is
2 begin
3 select * from dual;
4 end;
5 /
create procedure procname is
*
ERROR at line 1:
ORA-00955: name is already used by an existing object
SQL>
如果您创建的过程无效,则:
SQL> create procedure procname_2 is
2 begin
3 select * from dual;
4 end;
5 /
Warning: Procedure created with compilation errors.
SQL> show err
Errors for PROCEDURE PROCNAME_2:
LINE/COL ERROR
-------- -----------------------------------------------------------------
3/3 PLS-00428: an INTO clause is expected in this SELECT statement
SQL>