oracle函数_表值数据返回

一:创建

CREATE OR REPLACE FUNCTION FN_T_EM_RT_RUNSTATE_DETAIL

/*

 结果:返回表数据

 步骤:1.首先需要创建临时表T_EM_RT_RUNSTA_TEMP(用于返回数据的临时表中)

       2.在PACKAGE文件下创建包FN_T_EM_RT_RUNSTATE_DETAIL_PKG,声明T_EM_RT_RUNSTA_TEMP表作为返回数据的表

       3.正文:将查询到的数据插入临时表

       4.打开游标,按行读取临时表,并通过管道函数将整个数据集一次性返回出去(等同于sqlserver的表值函数

*/

(

  v_shopId CHAR-- 函数参数

)

RETURN  FN_T_EM_RT_RUNSTATE_DETAIL_PKG.T_EM_RT_RUNSTA_TEMP_type PIPELINED

AS

   v_runTimeFr_ft char(14);

   v_temp SYS_REFCURSOR;

   v_temp_1 T_EM_RT_RUNSTA_TEMP%ROWTYPE; --行对象

   PRAGMA AUTONOMOUS_TRANSACTION;  --事务

  

BEGIN

 

   -- 先删除临时表

   DELETE FROM T_EM_RT_RUNSTA_TEMP;

   -- 插入临时表

   INSERT INTO T_EM_RT_RUNSTA_TEMP

   (UPD_DATE, NODEID, DEVICENAME, RUNTIMEFR, RUNTIMETO, DURATION, RUNSTATUS)

       SELECT

    ... from ....

   COMMIT;

   -- 返回设备运行明细数据

   OPEN v_temp FOR

      SELECT * 

        FROM T_EM_RT_RUNSTA_TEMP;

   LOOP

      FETCH v_temp INTO v_temp_1;

      EXIT WHEN v_temp%NOTFOUND;

      PIPE ROW ( v_temp_1 );

   END LOOP;

END;

二:调用:

  SELECT * FROM TABLE(FN_T_EM_RT_RUNSTATE_DETAIL('参数'))

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值