我主要是一个 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”模式中执行 proc - 所以我不能只复制代码并让用户 A 调用“A.ExecuteSQL”。
我尝试过一些事情;但到目前为止还没有任何效果。我希望 ExecuteSQL 过程保留在 CODE 模式中;但是当“USERTABLE”传入时,我需要它知道有时这意味着 A.USERNAME,有时意味着 B.USERNAME。
有什么建议么?
Use:
ALTER SESSION SET CURRENT_SCHEMA = schema
那就是相当于SQL ServerEXECUTE AS syntax.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)