Oracle管道函数使用及数据查看

--创建一个自定义OBJECT对象
CREATE OR REPLACE TYPE OBJ_TABLE AS OBJECT
(
  NSRZT_DM VARCHAR2(10),
  NSRZTMC  VARCHAR2(100)
);

--创建一个自定义table对象引用OBJECT对象,创建后如要删除被应用对象需先删除应用对象,类似主外键
CREATE OR REPLACE TYPE LIST_TABLE IS TABLE OF OBJ_TABLE

--创建函数
CREATE OR REPLACE FUNCTION F_PIPES(JLS NUMBER) RETURN LIST_TABLE
  PIPELINED --LIST_TABLE返回类型
 AS
  V_OBJ_TABLE OBJ_TABLE;
BEGIN
  FOR I IN (SELECT NSRZT_DM, NSRZTMC FROM TEST01 WHERE ROWNUM <= JLS) LOOP
    V_OBJ_TABLE := OBJ_TABLE(I.NSRZT_DM, I.NSRZTMC);
    PIPE ROW(V_OBJ_TABLE); --返回OBJ_TABLE类型的单列数据
  END LOOP;
  RETURN;
END F_PIPES;

-----测试表TEST01数据如下图所示

--测试函数
----结果数据以集合(collection)形式返回
SELECT F_PIPES(5) FROM DUAL


----结果数据以单行形式返回
SELECT * FROM TABLE(F_PIPES(6)); 

 

 参考:Oracle中函数如何返回结果集 - fery - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值