2011-11-28 31 views
1

在这里,我已经在Oracle中的存储过程:什么传递的SYS_REFCURSOR参数

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块已完成”。然后我将程序更改为

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

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

P.S.当我尝试通过右键单击程序并选择Run来运行程序,我得到:

DECLARE 
    CV_2 sys_refcursor; 
BEGIN 

SP_COMPS(
    CV_2 => CV_2 
    ); 

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

回答

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变量的类型。

相关问题