可以吗
alter session set current_schema=MySchema;
在包装内?
我们的asp.net Web应用程序调用Oracle包。我们想要与不是MySchema所有者的Oracle用户连接到数据库。为此,我们授予Other_User执行权限以打包MyPackage。
示例:
grant execute on MySchema.MyPackage to Other_User
但是当Web应用程序连接到Oracle并尝试执行MyPackage的存储过程时,它会收到错误,因为表不属于Other_User。
避免错误的一种方法是创建同义词,但我们会优先使用
alter session set current_schema=MySchema;
如果可能的话,在包装内。
编辑:当试图在包中加入“alter session”时:
答案 0 :(得分:4)
您不能在PL / SQL中直接使用DDL语句(ALTER SESSION
是)。
您需要使用EXECUTE IMMEDIATE
:
execute immediate 'alter session set current_schema=MySchema';