【问题标题】:What to pass as a SYS_REFCURSOR argument作为 SYS_REFCURSOR 参数传递的内容
【发布时间】:2012-01-07 20:40:21
【问题描述】:

这里我在Oracle中有一个存储过程:

CREATE OR REPLACE PROCEDURE StP_COMPS
IS
 CV_1 SYS_REFCURSOR;
BEGIN
 OPEN CV_1  FOR SELECT * FROM COMPUTERS;
END;

当我执行 EXEC SP_COMPS 之类的过程时,我没有收到任何错误,SQL Developer 只显示“ananymous block completed”。然后我把程序改成一个

CREATE OR REPLACE PROCEDURE SP_COMPS
      (cv_1 OUT SYS_REFCURSOR)
IS
BEGIN
 OPEN CV_1  FOR SELECT * FROM COMPUTERS;
END;

当我执行时,我收到错误消息,指出参数类型的数量是错误的。我很好奇如果它只是一个输出参数,我可以将什么作为参数发送给过程。我想在过程中运行查询的结果集。我在这里做错了什么?

附:当我尝试通过右键单击该过程并选择“运行”来运行该过程时,我得到:

 DECLARE
  CV_2 sys_refcursor;
 BEGIN

 SP_COMPS(
    CV_2 => CV_2
    );

 :CV_2 := CV_2; -- <--Can't understand this part
 END;

【问题讨论】:

    标签: oracle stored-procedures cursor arguments


    【解决方案1】:

    你有一个变量,你应该执行如下过程:

    DECLARE
      CV_1 SYS_REFCURSOR;
    BEGIN
      SP_COMPS(CV_1);
      --use cv_1
    END;
    

    UPDATE(OP 更新后):这是一个简单的测试模板。正如这里所解释的:Easiest method to test an Oracle Stored Procedure,只需运行该代码,然后选择 ref_cursor 作为 cv2 变量的类型。

    【讨论】:

      猜你喜欢
      • 2021-01-26
      • 1970-01-01
      • 1970-01-01
      • 2012-03-17
      • 2011-08-02
      • 1970-01-01
      • 1970-01-01
      • 2021-10-23
      • 1970-01-01
      相关资源
      最近更新 更多