我想写个块 来查看我写的包里得过程的返回结果集,但是怎么写都不对,请高手帮忙。
我写的块:
SET serveroutput ON
DECLARE
REF CURSOR mycur ;
BEGIN
pkg_test.p_test(mycur);
FOR cur IN mycur
LOOP
dbms_output.put_line(cur.taskname);
END LOOP;
END;
网上看的pl/sql里好像不能直接定义CURSOR 变量----------------------------------------------
包如下:
CREATE OR REPLACE PACKAGE pkg_test
AS
TYPE t_cursor IS REF CURSOR;
PROCEDURE P_test
( cur_name OUT t_cursor);
END pkg_test;CREATE OR REPLACE PACKAGE BODY pkg_test
AS
PROCEDURE P_test
( cur_name OUT t_cursor)
IS
BEGIN
OPEN cur_name FOR
SELECT * FROM t_task;
END P_test;
END pkg_test;
我写的块:
SET serveroutput ON
DECLARE
REF CURSOR mycur ;
BEGIN
pkg_test.p_test(mycur);
FOR cur IN mycur
LOOP
dbms_output.put_line(cur.taskname);
END LOOP;
END;
网上看的pl/sql里好像不能直接定义CURSOR 变量----------------------------------------------
包如下:
CREATE OR REPLACE PACKAGE pkg_test
AS
TYPE t_cursor IS REF CURSOR;
PROCEDURE P_test
( cur_name OUT t_cursor);
END pkg_test;CREATE OR REPLACE PACKAGE BODY pkg_test
AS
PROCEDURE P_test
( cur_name OUT t_cursor)
IS
BEGIN
OPEN cur_name FOR
SELECT * FROM t_task;
END P_test;
END pkg_test;
解决方案 »
- oracle如何快速创建用户、还原数据库
- EXP-00008: 遇到 ORACLE 错误 ORA-01455: 转换列溢出整数数据类型
- 请教各位高手一个触发器的问题,谢谢
- sql server 导入 oracle 9i的问题
- ROWNUM的问题
- 多个存储过程怎么能使它们在一个事务中运行。
- 大量(2-3g)orreily电子书免费下载,www.icuc.cn,我看你顶不你?!喜欢的话记住顶,让其他的朋友也看到。
- 请问有没有方法把一个记录集中的某一列直接连接成一个串输出???
- (高分求解)数据库条记录中,查询出来总共的 Q值,以及,最大的P值,最大P值对应发生的时间。
- 求各位老师们给个查询语句实现下面的要求,谢谢!
- 创建自增主键的触发器失败!
- 各位ORACLE达人,给我解释一下那种写法好!速度快
--创建包头
create or replace package types
as procedure query(V_SQL in varchar2,RECORDS in out SYS_REFCURSOR );
end;
--创建包体
create or replace package body types is
procedure query(v_sql IN varchar2,records in out SYS_REFCURSOR)
as
begin
open records for V_sql;
end;
END types;
--调用
declare
allr number;
rs sys_refcursor;
cid number;
cname NUMBER;
begin
types.query('select SNO,ENO from tbgo',rs);
loop
fetch rs into cid,cname;
exit when rs%notfound;
dbms_output.put_line(cid);
end loop;
close rs;
end;
declare
cur sys_refcursor;
...