Arrays Plsql返回关联数组函数
我有一个关于在plsql函数上返回数组的问题。 我已经找到了很多关于使用数组的信息 但我正在努力实现一个应该返回数组的函数 来源示例: 正如我通过谷歌搜索了解到的,返回数组的一种方法是首先创建一个表数组,然后在函数中使用这种类型 我实际上想要完成的是返回一个在函数内部创建的数组 不确定我是否清楚,但这里有我的代码:Arrays Plsql返回关联数组函数,arrays,plsql,Arrays,Plsql,我有一个关于在plsql函数上返回数组的问题。 我已经找到了很多关于使用数组的信息 但我正在努力实现一个应该返回数组的函数 来源示例: 正如我通过谷歌搜索了解到的,返回数组的一种方法是首先创建一个表数组,然后在函数中使用这种类型 我实际上想要完成的是返回一个在函数内部创建的数组 不确定我是否清楚,但这里有我的代码: CREATE OR REPLACE FUNCTION createChecksumArray( checksumNumber VARCHAR2 ) RETURN textGroup
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)您不需要linetextGroups:=textGroupArray()代码>Dmitry!软件包正在编译。非常感谢。但现在,我不得不称之为这个包裹。我需要在一个可以设置为createChecksumArray函数的其他函数中创建一个数组。如果你有空闲时间,你能看看这个吗?这是一个小函数,它可以声明一个新数组,然后设置函数。。