oracle里头,一个存储过程需要返回多个结果集,应该咋整
oracle里面,一个存储过程需要返回多个结果集,应该咋整
oracle里面,一个存储过程需要返回多个结果集
t1:条件*******
t2:表1的从表,select t2.* from t2 where t1id in (t1.id where t1条件)
t3: 表1的从表,select t3.* from t3 where t1id in (t1.id where t1条件)
t4: 表1的从表,select t4.* from t4 where t1id in (t1.id where t1条件)
t5: 表1的从表,select t5.* from t5 where t1id in (t1.id where t1条件)
应该咋整
要用临时表?还是要每个结果集的 in里面都要加上t1的条件?
我也是个菜鸟,刚接触oracle,但是我还是希望有高效点的解决办法
------解决方案--------------------
直接将返回类型定义为cursor呗。
根据不同条件打开不同的游标,并将游标返回就行了。
------解决方案--------------------
定一个包,包里有一个cursor ,返回结果直接引用这个包就OK了。
------解决方案--------------------
------解决方案--------------------
用游标...........
oracle里面,一个存储过程需要返回多个结果集
t1:条件*******
t2:表1的从表,select t2.* from t2 where t1id in (t1.id where t1条件)
t3: 表1的从表,select t3.* from t3 where t1id in (t1.id where t1条件)
t4: 表1的从表,select t4.* from t4 where t1id in (t1.id where t1条件)
t5: 表1的从表,select t5.* from t5 where t1id in (t1.id where t1条件)
应该咋整
要用临时表?还是要每个结果集的 in里面都要加上t1的条件?
我也是个菜鸟,刚接触oracle,但是我还是希望有高效点的解决办法
------解决方案--------------------
直接将返回类型定义为cursor呗。
根据不同条件打开不同的游标,并将游标返回就行了。
------解决方案--------------------
定一个包,包里有一个cursor ,返回结果直接引用这个包就OK了。
------解决方案--------------------
--給你一個例子參考一下
--REF CURSOR返回結果集,你可以設置多個OUT參數分別代表不同的結果集
CREATE OR REPLACE PROCEDURE testka02(
p_co IN VARCHAR2,
p_classid IN VARCHAR2,
p_tja OUT sys_refcursor
)AS
BEGIN
OPEN p_tja FOR SELECT * FROM student WHERE co=p_co AND classid LIKE p_classid ;
EXCEPTION WHEN No_Data_Found THEN
p_tja:=NULL;
END testka02;
------解决方案--------------------
用游标...........