暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 命名流水线表函数的输出列的方法

ASKTOM 2019-05-02
275

问题描述

有多少种方法来命名流水线表函数的输出列?
我的理解是唯一的方法是通过这样的记录类型:

CREATE PACKAGE blah_blah_blah IS
  TYPE abc_rec IS RECORD (ID       NUMBER,
                          SUBJECT  VARCHAR2(30),
                          BODY     VARCHAR2(4000));

  TYPE abc_rec_table IS TABLE OF abc_rec;

  FUNCTION xyz RETURN abc_rec_table PIPELINED;
END blah_blah_blah;

SELECT *
FROM   blah_blah_blah.xyz;

ID  SUBJECT        BODY
==  ===========    ========
 1  Subject One    Body One
 2  Subject Two    Body Two
 3  Subject Three  Body Three
复制



我曾希望可以用光标列来命名它们,但这导致列被命名为: ATTR_1,ATTR_2,ATTR_3等。

CREATE PACKAGE blah_blah_blah IS
  CURSOR C1 IS
    SELECT CAST(ID      AS NUMBER)          AS ID,
           CAST(SUBJECT AS VARCHAR2(30))    AS SUBJECT,
           CAST(BODY    AS VARCHAR2(4000))  AS BODY
    FROM   ;

  TYPE abc_rec_table IS TABLE OF C1%ROWTYPE;

  FUNCTION xyz RETURN abc_rec_table PIPELINED;
END blah_blah_blah;

ATTR_1  ATTR_2         ATTR_3
======  =============  ========
   1    Subject One    Body One
   2    Subject Two    Body Two
   3    Subject Three  Body Three
复制

专家解答

我不知道有什么方法可以覆盖使用基于光标的数据类型时获得的ATTR * 名称。

所以我相信你必须使用记录 (或对象类型),就像你的第一个例子一样。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论