【问题标题】:Easiest method to test an Oracle Stored Procedure测试 Oracle 存储过程的最简单方法
【发布时间】:2009-06-04 19:36:46
【问题描述】:

我正在开发一个带有 Oracle 数据库的 ASP.NET 项目。我们使用 TOAD 来添加/管理存储过程——总的来说,我喜欢 TOAD 和 Oracle。我发现令人沮丧的一件事是找到一种简单的方法来测试 Oracle 存储过程,例如 SQL Server 的“exec [SP_NAME] Param1、Param2、ParamN”语法。

我们所有的存储过程都输出 Ref Cursors。这是一个存储过程的例子:

创建或替换过程 APP_DB1.GET_JOB ( p_JOB_ID IN JOB.JOB_ID%type, outCursor OUT MYGEN.sqlcur ) 是 开始 OPEN outCursor FOR 选择 * 从工作 WHERE JOB_ID = p_JOB_ID; 结束 GET_JOB; /

有什么建议吗?

【问题讨论】:

    标签: asp.net oracle


    【解决方案1】:

    您只需要一个脚本来调用您的存储过程,并为引用光标输出提供一个绑定变量,以便在编辑器窗口的 TOAD 网格中显示它。

    DECLARE
     type result_set is ref cursor; 
    BEGIN
     APP_DB1.GET_JOB(1, :result_set);
    END;
    

    当您随后运行此 TOAD 时会提示您“绑定”:result_set,只需从类型列表中选择 ref cursor,然后结果将显示在网格中。诀窍是将自己视为调用存储过程的“客户端”,并且需要自己的引用游标来存储结果。

    【讨论】:

    • 虽然我希望有一个单行语句,但这是我见过的最简单的方法。谢谢。
    • 这个技巧对我很有帮助。谢谢!
    【解决方案2】:

    如果你只是寻找调用SP的方式,那么Oracle方式是:

    begin
      sp_name(....);
    end;
    

    我不使用 Toad,但您应该可以将其放入 SQL 窗口并执行。

    【讨论】:

    • 我更新了问题,以便您可以看到我们使用参考游标进行输出。因此,我们不能使用您上面的示例。
    【解决方案3】:

    在 sqplus 中你可以使用语法

    SQL>var rc refcursor

    SQL>exec APP_DB1.GET_JOB(你要查询的job id,:rc)

    SQL>打印 rc

    应该这样做。第一行定义了一个绑定变量。您还可以为作业 ID 定义一个变量,或者直接输入它。

    【讨论】:

    • 我需要网格中的结果集,比如 SQL Server,所以我正在寻找一种在 TOAD 中执行的方法。
    【解决方案4】:

    TOAD 使用 Russel 的示例脚本以网格形式显示结果。作为脚本运行。

    variable  P_CUR refcursor;
    exec  PACK.GETEXECUTION ( '9f363e49-88c1-4295-b61e-60812d620d7e', '6', :P_CUR );
    print P_CUR;
    

    谢谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-20
      • 1970-01-01
      • 2011-05-14
      • 2023-03-03
      • 1970-01-01
      • 2014-09-08
      • 1970-01-01
      • 2016-08-27
      相关资源
      最近更新 更多