如何使用PL / SQL函数传递数组 [英] How to use pass an array in PL/SQL function
本文介绍了如何使用PL / SQL函数传递数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我是一个Java开发人员使用Oracle PL / SQL的知识有限。请让我知道如何传递一个数组给PL / SQL函数在下面的示例,以及如何调用它。
CREATE OR REPLACE FUNCTION get_employees(pUserId NUMBER)
RETURN VARCHAR2
IS
l_text VARCHAR2(32767):= NULL;
开始
FOR cur_rec IN(SELECT grp.NAME GROUP_NAME FROM UserGroupRole UGR,GROUP_ GRP WHERE ugr.groupid = grp.groupid和USERID = pUserId)LOOP
l_text:= l_text || ','|| cur_rec.GROUP_NAME;
END LOOP;
RETURN LTRIM(l_text,,);
结束;
/SELECT get_employees(414091)FROM DUAL;
解决方案
您可以创建一个集合类型和传递参数作为类型的实例。
SQL>创建类型num_array AS号表;
2 /类型创建。SQL>创建或替换函数myfun(arr_in num_array)的回报是VARCHAR2
2 TXT VARCHAR2(1000);
3开始
4我1..arr_in.count循环
5 TXT:TXT = || TO_CHAR(arr_in(I))|| ',';
6结束循环;
7回TXT;
8月底;
9 /功能创建的。SQL>宣布
2 myArray的num_array;
3 MYTEXT VARCHAR2(1000);
4开始
5 myArray的:= num_array();
6 myarray.extend(3);
7 myArray的(1):= 1;
8 myArray的(2):= 5;
9 myArray的(3):= 9;
10 DBMS_OUTPUT.PUT_LINE(myfun(myarray中));
11月底;
12 /1,5,9,PL / SQL过程已成功完成。
I am a Java developer with limited knowledge of Oracle PL/SQL. Please let me know how to pass an array to a PL/SQL function in the following example and how to invoke it.
CREATE OR REPLACE FUNCTION get_employees (pUserId NUMBER)
RETURN VARCHAR2
IS
l_text VARCHAR2(32767) := NULL;
BEGIN
FOR cur_rec IN (SELECT grp.NAME GROUP_NAME FROM UserGroupRole ugr, Group_ grp WHERE ugr.groupid=grp.groupid and USERID = pUserId) LOOP
l_text := l_text || ',' || cur_rec.GROUP_NAME;
END LOOP;
RETURN LTRIM(l_text, ',');
END;
/
SELECT get_employees(414091) FROM DUAL;
解决方案
You can create a collection type and pass the parameter as an instance of that type.
SQL> create type num_array as table of number;
2 /
Type created.
SQL> create or replace function myfun ( arr_in num_array ) return varchar2 is
2 txt varchar2(1000);
3 begin
4 for i in 1..arr_in.count loop
5 txt := txt || to_char( arr_in(i) ) || ',';
6 end loop;
7 return txt;
8 end;
9 /
Function created.
SQL> declare
2 myarray num_array;
3 mytext varchar2(1000);
4 begin
5 myarray := num_array();
6 myarray.extend(3);
7 myarray(1) := 1;
8 myarray(2) := 5;
9 myarray(3) := 9;
10 dbms_output.put_line( myfun( myarray ));
11 end;
12 /
1,5,9,
PL/SQL procedure successfully completed.
这篇关于如何使用PL / SQL函数传递数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文