我基本上是个 Oracle 初学者,如果这个问题很蠢,请原谅我...
我有一个名为 "CODE" 的模式,其中包含一个存储过程,用于执行任意 SQL(暂时忽略与之相关的潜在安全问题)。传入的 SQL 将选择数据,但所有数据都驻留在模式 A、B 或 C 中——但是 SQL 只会从一个模式中选择。
例如:用户类型 A 创建一个字符串“SELECT * FROM A.USERTABLE”,而用户类型 B 创建一个字符串“SELECT * FROM B.USERTABLE”。
我正在尝试做的是允许用户不显式指定其模式。在前端 .net 应用程序中,我已经知道它们是 A、B 还是 C 类型。我希望所有三个类型都只输入“SELECT * FROM USERTABLE”。
我的问题是我不知道该如何做到这一点。我的应用程序只能执行“CODE”模式中的存储过程,因此我不能简单地复制代码并让用户 A 调用“A.ExecuteSQL”。
我尝试了一些方法,但迄今为止没有什么作用。我希望 ExecuteSQL 存储过程保留在 CODE 模式中,但当传入“USERTABLE”时,我需要它知道有时那意味着 A.USERNAME,有时是 B.USERNAME。
有什么建议吗?
我有一个名为 "CODE" 的模式,其中包含一个存储过程,用于执行任意 SQL(暂时忽略与之相关的潜在安全问题)。传入的 SQL 将选择数据,但所有数据都驻留在模式 A、B 或 C 中——但是 SQL 只会从一个模式中选择。
例如:用户类型 A 创建一个字符串“SELECT * FROM A.USERTABLE”,而用户类型 B 创建一个字符串“SELECT * FROM B.USERTABLE”。
我正在尝试做的是允许用户不显式指定其模式。在前端 .net 应用程序中,我已经知道它们是 A、B 还是 C 类型。我希望所有三个类型都只输入“SELECT * FROM USERTABLE”。
我的问题是我不知道该如何做到这一点。我的应用程序只能执行“CODE”模式中的存储过程,因此我不能简单地复制代码并让用户 A 调用“A.ExecuteSQL”。
我尝试了一些方法,但迄今为止没有什么作用。我希望 ExecuteSQL 存储过程保留在 CODE 模式中,但当传入“USERTABLE”时,我需要它知道有时那意味着 A.USERNAME,有时是 B.USERNAME。
有什么建议吗?
ALTER
语句还是在过程CODE
中执行? - Guru