动态sql(2)
假定有这个的一个表:
table a(id varchar(6),mydesc varchar(80),primary key(id))
设数据如下:
id desc
test1 test1 desc
test2 test2 desc
test3 test3desc
test4 testddd
需要写一个函数list( fieldname)返回以逗号分隔的字符串。如上表:
select list(id) from a where id<>’test4’ , 返回要求结果是:test1,test2,test3
因sql2000下函数中无法用Exec(),exec sp_executesql及动态SQL,请各位高手提供思路或方法.,谢谢!
这个是sqlserver版的问题,请问在oracle中如何实现!?
++++++++++++++++++++++++++++++++
sqlserver解决方案:
create function f_str(@inid varchar(1000),@outid varchar(1000))
returns varchar(8000)
as
begin
declare @r varchar(8000)
select
@r = isnull(@r,'')+','+id
from
a
where
','+isnull(@inid ,id)+',' like '%,'+id+',%'
and
','+isnull(@outid,'')+',' not like '%,'+id+',%'
set @r = isnull(stuff(@r,1,1,''),'')
return @r
end
_____________________________
@r = isnull(@r,'')+','+id 可以代替oracle中游标的作用,会累加id???
小弟菜鸟,大家请指教!