1

有没有可能做

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;

如果可能的话,在包装内。

编辑:尝试将“更改会话”放入包中时: 在此处输入图像描述

4

1 回答 1

4

您不能ALTER SESSION直接在 PL/SQL 中使用 DDL 语句(即)。

您需要使用EXECUTE IMMEDIATE

execute immediate 'alter session set current_schema=MySchema';
于 2012-09-17T16:32:19.887 回答