首页 文章

测试Oracle存储过程的最简单方法

提问于
浏览
9

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

我们所有的存储过程都输出Ref Cursors . 以下是存储过程的示例:

CREATE OR REPLACE PROCEDURE APP_DB1.GET_JOB
(
    p_JOB_ID IN JOB.JOB_ID%type,
    outCursor OUT MYGEN.sqlcur
)
IS
BEGIN
    OPEN outCursor FOR
    SELECT *
    FROM JOB
    WHERE JOB_ID = p_JOB_ID;
END GET_JOB;
/

有什么建议?

4 回答

  • 1

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

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

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

  • 0

    如果您只是在寻找一种调用SP的方法,那么Oracle的方法是:

    begin
      sp_name(....);
    end;
    

    我不使用Toad,但您应该能够将其放入SQL窗口并执行它 .

  • 1

    在sqplus中,您可以使用语法

    SQL> var rc refcursor

    SQL> exec APP_DB1.GET_JOB(要查询的作业ID,:rc)

    SQL> print rc

    应该这样做 . 第一行定义了绑定变量 . 您还可以为作业ID定义变量,或者只需键入它 .

  • 13

    TOAD使用Russel的示例脚本在网格中显示结果 . 以脚本运行 .

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

    谢谢!

相关问题