如何在Oracle SQL developer中查看/执行已授予的存储过程

如何在Oracle SQL developer中查看/执行已授予的存储过程,oracle,oracle-sqldeveloper,Oracle,Oracle Sqldeveloper,我用来访问特定数据库的用户已被授予由另一个用户管理的存储过程的执行权限。在Oracle SQL developer中是否有任何方法可以像常规存储过程一样查看或运行该存储过程?目前,我在connections to right click and run中的Procedure选项卡中没有看到它。我正在用java执行存储过程,但我需要能够在SQL developer中测试它 如果您的shema中有一个程序“test_procedure”,您可以这样执行它: begin test_procedur

我用来访问特定数据库的用户已被授予由另一个用户管理的存储过程的执行权限。在Oracle SQL developer中是否有任何方法可以像常规存储过程一样查看或运行该存储过程?目前,我在connections to right click and run中的Procedure选项卡中没有看到它。我正在用java执行存储过程,但我需要能够在SQL developer中测试它

如果您的shema中有一个程序“test_procedure”,您可以这样执行它:

begin
  test_procedure;
end;
begin
  parent.test_procedure;
end;
如果您在另一个模式中有它,让我们说“parent”,那么您可以这样称呼它:

begin
  test_procedure;
end;
begin
  parent.test_procedure;
end;

该过程不会立即出现在您的连接下的树列表中,因为这些过程只是您所连接的用户自己拥有的过程。(如果右键单击并选择“过滤器”,则会有一个“覆盖架构过滤器”选项,但即使设置了过滤器和该标志,您也看不到其他用户的过程。)

但在连接下对象类型列表的底部有一个“其他用户”条目。如果展开它,找到过程的所有者并展开它,然后展开该用户下的过程列表-您将看到您有权查看/执行的所有过程

然后,您可以从那里运行它,就像您运行自己的过程一样

您还可以右键单击连接并选择“模式浏览器”;然后在出现的选项卡中,您可以更轻松地更改用户,并将对象类型更改为“过程”。您可能会发现这比浏览树更快


@JeffSmith已经(当然-应该先看一下…)

是的,如果你知道“原始”模式名是什么,你可以。只需键入schemaowner。procedurename@OracleDev:干杯。我想我希望它能更新我的存储过程列表。存储过程有输入和输出,在SQL developer中使用run函数更容易。请查看Alex Poole的回答:)干杯,设保人中的存储过程已更新,这没有反映在“其他用户”存储过程中,这是我假设的旧版本。需要做什么来级联更改?不太确定您的意思,您应该始终看到当前代码。如果您在会话中打开了该过程,然后对其进行了更新,则可能只需要关闭并重新打开它。或者您可以右键单击并刷新列表。不,它不会更新到新版本。程序开始时的注释包含更新的详细信息,因此很容易跟踪更改。你知道任何改变被反映的原因吗?这就是为什么java代码会崩溃的原因,因为旧版本的参数比新版本的多。你确定更新的版本已经编译好了吗;是否在您期望的模式(和数据库)中?如果Java调用也命中旧版本,那么这就是它所使用的DB/模式中实际存在的内容。您可以查询
所有\u对象
查看
上次\u ddl\u时间
,以及
所有\u源
查看当前代码;但这也是SQL开发人员所关注的。请检查您的过程的信息页面和上次DDL时间-顺便说一句,我们不会缓存该页面,我们将向您显示数据库中的过程源代码。您可以打开view-log-statements面板,查看我们用于自己填充代码编辑器的sql