Arrays Plsql返回关联数组函数

Arrays Plsql返回关联数组函数,arrays,plsql,Arrays,Plsql,我有一个关于在plsql函数上返回数组的问题。 我已经找到了很多关于使用数组的信息 但我正在努力实现一个应该返回数组的函数 来源示例: 正如我通过谷歌搜索了解到的,返回数组的一种方法是首先创建一个表数组,然后在函数中使用这种类型 我实际上想要完成的是返回一个在函数内部创建的数组 不确定我是否清楚,但这里有我的代码: CREATE OR REPLACE FUNCTION createChecksumArray( checksumNumber VARCHAR2 ) RETURN textGroup

我有一个关于在plsql函数上返回数组的问题。 我已经找到了很多关于使用数组的信息

但我正在努力实现一个应该返回数组的函数

来源示例:

正如我通过谷歌搜索了解到的,返回数组的一种方法是首先创建一个表数组,然后在函数中使用这种类型

我实际上想要完成的是返回一个在函数内部创建的数组

不确定我是否清楚,但这里有我的代码:

CREATE OR REPLACE FUNCTION createChecksumArray( checksumNumber VARCHAR2 )
RETURN textGroupArray 
AS
  ..    
  TYPE textGroupArray  IS TABLE OF VARCHAR2(30)
  INDEX BY             BINARY_INTEGER;
  textGroups           textGroupArray;
  ..
BEGIN
  ..
  textGroups := textGroupArray();
  ..
  (A LOOP)
    -- add textgroup into the array
    IF textGroup != 0 THEN
      arrayCount               := arrayCount + 1;
      textGroups( arrayCount ) := TRIM( textGroup );
    END IF;
  (END THE LOOP)
  ..
  RETURN textGroups;
我首先在函数外部编写代码,用于测试数组是否正常工作。通过输出阵列的测试结果:

spaced text: 3536 2029 2712 3456 789 
我无法返回函数tho中声明的数组。不确定这是否可能,所以问题是:这可能吗?如果可能,如何实现?我在这里做错了什么

我在Stackoverflow上找不到包含此特定主题的问题。但是如果我的搜索没有那么好,我很抱歉

另外,如果你不喜欢我的帖子,请添加一个编辑,这样我可以向你学习


您需要首先创建类型,然后在函数声明中使用if。创建一个包并在其中声明类型

create or replace package my_pkg as

  type textGroupArray IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER;

  FUNCTION createChecksumArray(checksumNumber VARCHAR2) RETURN textGroupArray;

end my_pkg;
/

create or replace package body my_pkg as
    FUNCTION createChecksumArray( checksumNumber VARCHAR2 )
    RETURN textGroupArray 
    is
      ..    
      TYPE textGroupArray  IS TABLE OF VARCHAR2(30)
      INDEX BY             BINARY_INTEGER;
      textGroups           textGroupArray;
      ..
    BEGIN
      ..
      textGroups := textGroupArray();
      ..
      (A LOOP)
        -- add textgroup into the array
        IF textGroup != 0 THEN
          arrayCount               := arrayCount + 1;
          textGroups( arrayCount ) := TRIM( textGroup );
        END IF;
      (END THE LOOP)
      ..
      RETURN textGroups;
    end;

end my_pkg;
/

你好,德米特里!谢谢你的回复。试图使用你的代码,但我肯定做错了@JimVercoelen对不起,我犯了一个错误(现已更正)。正确的是
创建包。。。as
功能。。。。is
@JimVercoelen您的代码有两个错误:1)函数中的一个变量与函数参数同名,2)您不需要line
textGroups:=textGroupArray()Dmitry!软件包正在编译。非常感谢。但现在,我不得不称之为这个包裹。我需要在一个可以设置为createChecksumArray函数的其他函数中创建一个数组。如果你有空闲时间,你能看看这个吗?这是一个小函数,它可以声明一个新数组,然后设置函数。。