以下我本人的伪代码 create or replace function CONCATSTR (tb in table_type) return varchar2 is str varchar2(4000); begin for i in 1..tb.count loop str := str || ',' || tb.col; end loop; return str; end; tb: 表类型参数 table_type: 不知道Oracle有没有表类型? str:拼接字符串 tb.col:代表该表的字段 tb.count:代表该表的行数就是这个逻辑,用函数是因为考虑到重用,具体如何实现在Oracle中?还有一个小问题,如果我用的分隔符不是','而是换行符,应该怎样做?
table_type: 不知道Oracle有没有表类型? ----------------------------------------自己定义类型create type t_air as object(id int ,name varchar(20));
create or replace function CONCATSTR (tb in table_type) return varchar2
is
str varchar2(4000);
begin
for i in 1..tb.count loop
str := str || ',' || tb.col;
end loop;
return str;
end; tb: 表类型参数
table_type: 不知道Oracle有没有表类型?
str:拼接字符串
tb.col:代表该表的字段
tb.count:代表该表的行数就是这个逻辑,用函数是因为考虑到重用,具体如何实现在Oracle中?还有一个小问题,如果我用的分隔符不是','而是换行符,应该怎样做?
----------------------------------------自己定义类型create type t_air as object(id int ,name varchar(20));
http://topic.csdn.net/u/20090409/15/d82a6ebc-5345-4755-8fb9-7ce10b0448b4.html
但是报了个错:ORA-01489: result of string concatenation is too long
似乎是我连接字符串超长了,请问如何解决?
我估计拼接以后早就超过这个限制了,我试了下用substr截取前4000个字符,但是没用。。至于function的写法,有哪位高手有更好的意见?