我要创建一个oracle存储过程,能返回查询的结果集,然后可以调用这个结果集,求大侠指教
答案:2 悬赏:0 手机版
解决时间 2021-03-26 05:20
- 提问者网友:贪了杯
- 2021-03-26 00:27
我要创建一个oracle存储过程,能返回查询的结果集,然后可以调用这个结果集,求大侠指教
最佳答案
- 五星知识达人网友:怙棘
- 2021-03-26 00:56
使用函数更方便些:
-- 定义包头, 以及需要用到的返回表的行定义, 定义函数FN_TB
CREATE OR REPLACe PACKAGE PKG_T02
IS
TYPE TYPE_REC IS RECORD (FID NUMBER);
TYPE TYPE_TB IS TABLE OF PKG_T02.TYPE_REC;
FUNCTION FN_TB(P_PROJECT VARCHAR2, P_VERSION VARCHAR2) RETURN PKG_T02.TYPE_TB PIPELINED;
END PKG_T02;
-- 包体, 实现函数FN_TB
CREATE OR REPLACE PACKAGE BODY PKG_T02
IS
FUNCTION FN_TB(P_PROJECT VARCHAR2, P_VERSION VARCHAR2)
RETURN PKG_T02.TYPE_TB PIPELINED
IS
V_REC PKG_T02.TYPE_REC;
BEGIN
FOR V_I IN (
-- 将你的查询替换到此处
SELECT distinct (JI.ID)
left ......
-- 使用传入参数的条件
WHERe P.Pname = P_PROJECT AND PV.vname = P_VERSION
) LOOP
V_REC.FID := V_I.DEPARTMENT_ID;
PIPE ROW(V_REC);
END LOOP;
RETURN;
END FN_TB;
END PKG_T02; 可以像使用一般table这样来使用该函数:
SELECT * FROM TABLE(PKG_T02.FN_TB('项目值', '版本值'));
-- 定义包头, 以及需要用到的返回表的行定义, 定义函数FN_TB
CREATE OR REPLACe PACKAGE PKG_T02
IS
TYPE TYPE_REC IS RECORD (FID NUMBER);
TYPE TYPE_TB IS TABLE OF PKG_T02.TYPE_REC;
FUNCTION FN_TB(P_PROJECT VARCHAR2, P_VERSION VARCHAR2) RETURN PKG_T02.TYPE_TB PIPELINED;
END PKG_T02;
-- 包体, 实现函数FN_TB
CREATE OR REPLACE PACKAGE BODY PKG_T02
IS
FUNCTION FN_TB(P_PROJECT VARCHAR2, P_VERSION VARCHAR2)
RETURN PKG_T02.TYPE_TB PIPELINED
IS
V_REC PKG_T02.TYPE_REC;
BEGIN
FOR V_I IN (
-- 将你的查询替换到此处
SELECT distinct (JI.ID)
left ......
-- 使用传入参数的条件
WHERe P.Pname = P_PROJECT AND PV.vname = P_VERSION
) LOOP
V_REC.FID := V_I.DEPARTMENT_ID;
PIPE ROW(V_REC);
END LOOP;
RETURN;
END FN_TB;
END PKG_T02; 可以像使用一般table这样来使用该函数:
SELECT * FROM TABLE(PKG_T02.FN_TB('项目值', '版本值'));
全部回答
- 1楼网友:走死在岁月里
- 2021-03-26 02:35
项目、版本多么?
提供思路:
创建一个游标,将“项目”、“版本”先查出来赋给查询语句,然后将查询结果插入临时表。
提供思路:
创建一个游标,将“项目”、“版本”先查出来赋给查询语句,然后将查询结果插入临时表。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯