oracle存储过程回到游标结果集怎样存到表中

如题所述

第1个回答  2014-11-11
有俩种方法:
一种是声明系统游标,一种是声明自定义游标,然后后面操作一样,参数类型为
in out 或out
(1)声明个人系统游标.(推荐)
create or replace p_temp_procedure
(
cur_arg out sys_refcursor; --方法1
)
begin
open cur_arg for select * from tablename;
end
调用
declare
cur_calling sys_refcursor;
begin
p_temp_procedure(cur_calling); --这样这个游标就有值了
for rec_next in cur_calling loop
....
end loop;
end;

(2)在包头中申明一个游表类型,然后调用者申明一个这个类型的游标变量,传给返回游标的存储过程 ,存储过程out这个结果集,这种方法很麻烦.游标类型不能像索引表一样使用create or replace type方法来创建,所以只能在包中申明,并且需要使用/来执行,后面的存储过程才认这个游标类型.(不推荐,但是建议要知道并且要会这种方式,毕竟它有它存在的道理)
--定义全局变量
create or replace package pkg_package
as
type type_cursor is ref cursor;
type type_record is record
(
test01 varchar2(32),
test02 varchar2(32),
test03 varchar2(32)
);
end;
/
--创建返回游标的存储过程
create or replace procedure p_temp_procedure
(
cur_out_arg out pkg_package.type_cursor
)
is
begin
open cur_out_arg for select * from test;
end;
/
--调用
declare
cur_out_arg pkg_package.type_cursor;
rec_arg pkg_package.type_record;
begin
p_temp_procedure(cur_out_arg);
fetch cur_out_arg into rec_arg;
dbms_output.put_line(rec_arg.test01);
dbms_output.put_line(rec_arg.test02);
dbms_output.put_line(rec_arg.test03);
end;本回答被提问者和网友采纳
第2个回答  2014-11-10
把游标的值传给一个sql就行了啊

存储过程如何把一个结果集放在一张表里面并返回来
结果集有必要放在表里面返回来,直接返回游标就可以了,结果集也可以看作是张表的。DB2的的解决方案:1.声明存储过程的时候,在声明之后添加 RESULT SETS 1,表示返回一个结果集,示例如下:CREATE PROCEDURE YOUPRO(IN P_UserId INTEGER)LANGUAGE SQL RESULT SETS 1 --- -- SQL 存储过程(获取用户信...

怎么样执行一个存储过程,将返回来地结果插入到表中
1.按照返回的结果集结构先创建表,然后运行存储过程,插入结果到表中;SQL codecreate table tb()insert tb exec 存出過程 2.不指定表结构,直接插入到临时表中

oracle存储过程中循环查询返回多个结果集怎么集合在一起?_
利用游标将查询结果插入到一个表里!或者存储到定义的数组中!

oracle存储过程中循环查询返回多个结果集怎么集合在一起?
你可以把返回的结果插到一张表里,然后去看不就行了吗?你可以把每次查询,改成每次插入一张表里,回过头再看结果集

Oracle中怎样用存储过程将一段字符串以逗号为界截取,并将得到的子串存...
--通过游标遍历调用方法拆取存表:--方法 create or replace function f_test_substr(prm1 varchar2, --地prm2 varchar2 , --名称prm3 varchar2, --IPprm4 varchar2 --结果)return varchar2asv_n int:=0; --第几次取v_l int; --:截取次数v_s varchar2(2000); --...

oracle存储过程 使用游标 比对临时表和业务表两张表 相同数据找出来 做...
使用merge into就可以了。示例 MERGE INTO bonuses D USING (SELECT employee_id, salary, department_id FROM employees WHERE department_id = 80) S ON (D.employee_id = S.employee_id)WHEN MATCHED THEN UPDATE SET D.bonus = D.bonus + S.salary*.01 DELETE WHERE (S.salary > 8000)W...

oracle存储过程返回多个结果集填充dataset求助
先Fill到一个空的dataset,会生成3张表。再将这3张表拷到你定义好的dataset中。

oracle 存储过程返回结果集怎么实现?用java如何调用这个存储过程?比如...
1:首先你需要创建一个包,并定义你返回的游标的类型、存储过程 create or replace package TEST_PKG is type cur_emp is REF CURSOR;procedure test_proc (emps out cur_emp);end TEST_PKG;2:然后你再创建包体 create or replace package body TEST_PKG is procedure test_proc (emps out cur_...

如何将ORACLE存储过程中SQL的结果集打印出来,并且按照一定的格式封装...
这就用上了递归的思想,思路如下,没有你的数据如果有问题你调试下 V_SQL='select * from (select REPLACE(SYS_CONNECT_BY_PATH(a,','),',') , LEVEL from (SELECT OBJECT_ID || ''|''|| OBJECT_NAME || ''|''|| PHASE_ID || ''|''|| BUSI_TYPE || ''|''|...

帮忙写个oracle 存储过程,可以返回表的所有列的结果集
(1)创建包头,在其中声明类型和存储过程,类型应该引用游标;(2)创建包体,定义存储过程,执行查询,将查询得到的结果集以游标句柄的形式返回。说明:游标分为显示游标和隐式游标,任何查询结果默认都提供隐式游标,当前方案的重点在于使用游标取得查询结果的句柄,由于游标被引用为类型,通过返回类型,即...

相似回答