如何使用PL / SQL函数传递数组 [英] How to use pass an array in PL/SQL function

查看:230
本文介绍了如何使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆