我的场景:
-
Schema name :schema1
-
Package name :pkg_system
-
procedure name :proc1
现在我正在尝试为proc1创建一个同义词,如下所示
CREATE PUBLIC SYNONYM call_proc FOR schema1.pkg_system.proc1;
...但它给了我语法错误 .
ORA-00933: SQL command not properly ended
我更改了以下代码:
CREATE PUBLIC SYNONYM call_proc FOR pkg_system.proc1;
我可以成功创建同义词,但当我尝试通过同义词执行存储过程时:
EXEC call_proc
...出现以下错误:
ORA-06550: line 1, column 7:
PLS-00201: identifier call_proc must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
我使用模式名称来调用程序,如 schema1.call_Proc
仍然得到相同的错误 .
我在这里做错了什么?
2 回答
解决此限制的一种方法是,假设您确实需要使用单个名称调用该过程(无论出于何种原因),您可以将其包装在模式级过程中:
注here
Restriction on the FOR Clause 架构对象不能包含在包中 .
换句话说,您无法为包过程创建同义词 .
我已经看到了创建包装程序(非打包)并为其创建公共同义词的解决方案 .