|
原帖由 hanhoudba 于 2011-5-12 11:26 发表 ![]()
急!!!请高手写一个对应的DB2的SQL PL自定义函数,下面是Oracle原来的UDF,就是将字符串数组中的多个字符串合并成一个字符串,用逗号隔开。 比如,传入数组[‘aa’, 'bb', 'cc'], 返回‘aa, bb,cc’。
感激中!
create or replace type strings_table is table of varchar2(32);
///////////Oracle's UDF
create or replace function mymerge (pv in strings_table) return varchar2
is
ls varchar2(32000);
begin
for i in 1..pv.count loop
ls := ls || ',' || pv(i);
end loop;
return substr(ls,2);
end;
DB2中没有table of 这种定义,像你这种情况,是可以用字符数组类型代替的。这个UDF用DB2 SQL PL的实现如下,看看是否能对路。
1 CREATE TYPE STRINGS_TABLE AS varchar(32000) ARRAY[]#
2 drop function mymerge#
3 create function mymerge (in pv strings_table)
4 returns varchar(32000)
5 language SQL
6 begin
7 declare i int;
8 declare maxnum int;
9 declare ls varchar(32000) default '';
10 set i = 1;
11 set maxnum = CARDINALITY(pv) + 1;
12 while i< maxnum do
13 set ls = ls || ',' || pv(i);
14 set i = i+1;
15 end while;
16 return substr(ls,2);
17 end#
不要急躁。 |
|