从Oracle函数返回多个值

时间:2012-02-23 13:35:11

标签: arrays oracle11g

我想从ORACLE FUNCTION返回多个值来填充前端的下拉列表框,值是包的数据库常量。

我尝试过这个功能:

return varchar2
IS

BEGIN

return  pr_package.constant1_string;

return pr_package.constant2_string;

  end;

我需要尽快提供帮助,欢迎提出建议。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

你不能从函数中获得多个回报。

您可以从函数返回一个集合。像

这样的东西
CREATE TYPE string_array
    IS TABLE OF VARCHAR2(100);

CREATE OR REPLACE FUNCTION return_string_array
   RETURN string_array
IS
  l_string_array string_array := new string_array( pr_package.constant1_string, 
                                                   pr_package.constant2_string );
BEGIN
  RETURN l_string_array;
END;

或者您可以创建流水线表函数。使用相同的类型,您可以管道多行

  1  create or replace function pipeline_test
  2   return string_array
  3   pipelined
  4  is
  5  begin
  6    pipe row( 'Foo' );
  7    pipe row( 'Bar' );
  8    return;
  9* end;
SQL> /

Function created.

SQL> select * from table( pipeline_test );

COLUMN_VALUE
--------------------------------------------------------------------------------
Foo
Bar