如何在函数中使用Pl / SQL集合

时间:2015-01-23 08:50:40

标签: oracle function collections plsql

对于作业,建议是使用馆藏。简单地说我需要在几个子串中切断一个字符串,颠倒这些字符串的顺序并将它们放在一起。

忽略了实际代码,因为它在声明部分崩溃了。  继续收到错误: stringlist1不是程序或未定义 因此,出于某种原因,我尝试分配给stringlist1的类型并不是这样做的。 你们知道为什么会这样吗?如果这是不可修复的,那么除了为集合中的每一行创建一个变量之外,什么是一个简洁的解决方法?

我尝试的事情:

    *在"创建类型"中创建我自己的类型事先声明
    *在函数
    之前在匿名块中创建类型 *在函数的声明部分中创建varchar集合 *下面使用的dbms包 *重命名地狱 *尝试启动类似stringlist1的类型dbms_utility.name_array:= dbms_utility.name_array();
Create or replace FUNCTION TEST (p_number varchar2)
RETURN varchar2
IS
stringlist1 dbms_utility.name_array;
stringlist2 dbms_utility.name_array;
BEGIN
stringlist1('test');
stringlist2('test');
dbms.output.put_line(stringlist1(1));
return stringlist1(1);
END;

1 个答案:

答案 0 :(得分:1)

可以将字符串添加到stringlist1(1) := 'test';

等数组中

因此,您的代码将在更正后进行编译,如

CREATE OR REPLACE FUNCTION TEST (p_number VARCHAR2)
   RETURN VARCHAR2
IS
   stringlist1   DBMS_UTILITY.name_array;
   stringlist2   DBMS_UTILITY.name_array;
BEGIN
   stringlist1(1) := 'test';
   stringlist2(1) :=  'test';
   dbms_output.put_line (stringlist1 (1));
   RETURN stringlist1 (1);
END;

PS:包名称不是dmbs.output,正确的是dbms_output