gpt4 book ai didi

oracle - 如何在没有自定义类型或游标的情况下从 Oracle 函数返回表?

转载 作者:行者123 更新时间:2023-12-01 14:35:35 26 4
gpt4 key购买 nike

我希望从 Oracle 函数返回结果表。使用游标是最简单的方法,但我必须处理它的应用程序不会接受游标作为返回值。另一种方法是创建一个类型(可能包装在一个包中)以配合此功能。但是,创建多个类型(我有 4 个以上的函数要编写)只是为了返回表结果似乎有些多余。我还缺少其他选择吗?

最佳答案

更新:请参阅无大小限制的 TABLE 解决方案的第一条评论。

返回一个 VARRAY 或使用一个 PIPELINED 函数从中查询。

  • 对于 VARRAY 查找 this文章的细节。那里的代码示例:

    CREATE OR REPLACE TYPE EMPARRAY is VARRAY(20) OF VARCHAR2(30)
    /

    CREATE OR REPLACE FUNCTION getEmpArray RETURN EMPARRAY
    AS
    l_data EmpArray := EmpArray();
    CURSOR c_emp IS SELECT ename FROM EMP;
    BEGIN
    FOR emp_rec IN c_emp LOOP
    l_data.extend;
    l_data(l_data.count) := emp_rec.ename;
    END LOOP;
    RETURN l_data;

    结束;

  • 对于 PiPELINED 函数结帐 here .代码示例:

    create or replace function Lookups_Fn return lookups_tab
    pipelined
    is
    v_row lookup_row;
    begin
    for j in 1..10
    loop
    v_row :=
    case j
    when 1 then lookup_row ( 1, 'one' )
    --...
    when 7 then lookup_row ( 7, 'seven' )
    else lookup_row ( j, 'other' )
    end;
    pipe row ( v_row );
    end loop;
    return;
    end Lookups_Fn;
    /

    select * from table ( Lookups_Fn );

关于oracle - 如何在没有自定义类型或游标的情况下从 Oracle 函数返回表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/608271/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com