请教各位大侠:
现有一存储过程 GetRoleInfo(v_RoleID integer, smenu_cur out query_pkg.Query_cur ),存储过程有2个参数:后者为接收结果集的游标 存储过程的作用为:返回符合条件的结果记录我想在oracle中执行存储过程该如何执行?并非通过c#来接收结果集 谢谢!
现有一存储过程 GetRoleInfo(v_RoleID integer, smenu_cur out query_pkg.Query_cur ),存储过程有2个参数:后者为接收结果集的游标 存储过程的作用为:返回符合条件的结果记录我想在oracle中执行存储过程该如何执行?并非通过c#来接收结果集 谢谢!
2 (pi_deptno IN emp.deptno%TYPE,po_result in out SYS_REFCURSOR)
3 is
4 begin
5 OPEN po_result FOR
6 SELECT empno,ename,job,sal FROM emp
7 WHERE deptno=pi_deptno;
8 end test;
9 /过程已创建。SQL> var r_cur refcursor
SQL> exec test(10,:r_cur)PL/SQL 过程已成功完成。SQL> print :r_cur EMPNO ENAME JOB SAL
---------- ---------- --------- ----------
7782 CLARK MANAGER 2450
7839 KING PRESIDENT 5000
7934 MILLER CLERK 1300SQL>
楼主应该在包QUERY_PKG内部自己定义了一个游标QUERY_CUR,没有系统提供的默认动态游标,所以我就直接引用你的游标了。
另外如果不愿意在sqlplus下去执行的话,想在PL/SQL中的SQLWINDOW中运行,可以尝试使用一下办法:
DECLARE
pub_cursor QUERY_PKG.QUERY_CUR;
BEGIN
GetRoleInfo(10,pub_cursor);
FETCH pub_cursor INTO <info_object>;--具体写入那种类型的变量,可以自己决定。
WHILE pub_cursor%FOUND LOOP
FETCH pub_cursor INTO <info_object>;
END LOOP;
CLOSE pub_cursor;
END;