建立procedure,怎么报错,如何修改呢

SQL> CREATE OR REPLACE PROCEDURE ACCESS_PROD_INST AS
2 BEGIN
3 INSERT INTO ACCESS_PROD_INST PROD_INST_iD SELECT PROD_INST_iD FROM ACCESS_PROD_INST@CRMBM;
4 END;
5 /

CREATE OR REPLACE PROCEDURE ACCESS_PROD_INST AS
BEGIN
INSERT INTO ACCESS_PROD_INST PROD_INST_iD SELECT PROD_INST_iD FROM ACCESS_PROD_INST@CRMBM;
END;

ORA-00955: 名称已由现有对象使用

SQL> SHOW ERRORS
No errors for PROCEDURE ORA9.ACCESS_PROD_INST

【ORA-00955: 名称已由现有对象使用】
这个错误说的不仅仅是有可能你有存储过程使用了【ACCESS_PROD_INST】,还有可能是你有表名叫【ACCESS_PROD_INST】或者其他oracle对象叫【ACCESS_PROD_INST】。

说明:其实由于你已经使用了【create or repalace procedure】即使有存储过程叫【ACCESS_PROD_INST】也会被覆盖掉,你用下面的命令查询一下,有什么对象叫【ACCESS_PROD_INST】,删掉它或者换一个存储过程名字。

【SELECT OBJECT_NAME,OBJECT_TYPE FROM USER_OBJECTS WHERE OBJECT_NAME='ACCESS_PROD_INST';】