当前位置: 首页 > 面试题库 >

以另一个用户身份执行Oracle存储过程

孔睿
2023-03-14
问题内容

我主要是oracle新手,所以如果这是一个愚蠢的问题,请原谅我…

我有一个名为“
CODE”的架构,该架构具有一个执行任意SQL的存储proc(目前,请忽略与此相关的潜在安全问题)。传入的SQL将选择数据;但是所有数据都驻留在架构A,B或C中-
但是SQL一次只能选择一个架构。

例如:类型A的用户创建字符串’SELECT * FROM A.USERTABLE’-类型B的用户创建字符串’SELECT * FROM
A.USERTABLE’。

我正在尝试做的是允许用户不显式指定其架构。在前端.net应用程序中;我已经知道它们是A,B还是C类型。我希望所有这三个类型都只需输入“ SELECT * FROM USERTABLE”。

我遇到的问题是我不知道该怎么做。我的应用程序只能在“ CODE”模式中执行proc-因此,我不能只复制代码并让用户A调用“ A.ExecuteSQL”。

我已经尝试了几件事;但到目前为止,没有任何效果。我希望ExecuteSQL
proc保留在CODE模式中;但是当’USERTABLE’传入时,我需要它知道有时意味着A.USERNAME,有时意味着B.USERNAME。

有什么建议?


问题答案:

使用:

ALTER SESSION SET CURRENT_SCHEMA = schema

这等效于SQL Server的EXECUTE AS语法。



 类似资料:
  • 问题内容: 我使用指南安装了jenkins,该指南在服务器中创建了一个“ jenkins”用户,并且显然在其下运行jenkins服务器。 我在服务器上的所有设置(虚拟环境,python软件包安装)均针对其他用户(“ ci-user”)。我有什么办法可以以“ ci_user”而不是“ jenkins”的身份运行我的工作?我想避免为“詹金斯”用户再次进行所有设置。 问题答案: 文件中有变量。您可以将其

  • 我一直试图使用Hibernate执行Oracle存储过程。这不是用于生产,而是用于我正在研究的Java源代码解析项目。简单地说,我不能从Oracle存储过程返回值。 我搜索并阅读了SO、Hibernate Community/Documentations(原生SQL章节)链接中的所有相关链接,并尝试了这些建议,但不知何故无法让它们发挥作用。以下是我的来源--我只包括相关的部分。

  • 问题内容: 我想将存储过程设置为始终以特定的域用户身份执行。无论用户调用还是尝试执行该过程,我都可以强制该过程以其他用户身份执行。 我们的供应商之一对其应用进行了硬编码,以使用本地db帐户执行某些过程以导入某些csv文件。不幸的是,我们无法将csv文件存储在本地数据库服务器上,而需要将它们放置在网络共享上。因此,我需要将这些过程设置为作为具有访问网络共享权限的域用户执行,该网络共享将放置文件。以下

  • 我如何在服务器的另一个存储过程中执行SQL存储过程?我将如何传递第二个过程的参数。?

  • 问题内容: 简而言之:我正在尝试在Entity Framework中运行Oracle存储过程(我知道这听起来很奇怪,但是在一般应用程序中使用Entity Framework,但是由于修改密钥的限制,EF无法处理此特定命令。值)。 过程具有一些参数(仅IN),并更新表中的值。我通过运行测试了它: 它工作正常。 我的参数定义如下: 我的查询是: 我正在尝试从C#代码执行它。即通过运行: 我收到错误OR

  • 问题内容: 我有一个需要很多参数的插入存储过程-其中2个是@ FirstName,@ LastName。我还有一个更新存储过程,该过程需要许多参数-其中2个是@ FirstName,@ LastName。 我想做的是,从插入SP内部完成之后,调用更新SP并将其发送给@ FirstName,@ LastName。 我不知道这样做的正确语法;我试过了: 但我认为这是错误的。 有人可以告诉我怎么写这个电