SQL中函数返回表,传递一个参数,无法唤醒用户自定义函数,解决方法!

王朝mssql·作者佚名  2006-01-09
宽屏版  字体: |||超大  

1: 把函数改成标量函数,及只返回一个值的方法,该方法根据具体情况修改既可.在此不讨论该方法

2:用游标处理,用户自定义函数返回表.

具体问题:

CREATE function 函数(@字段1 as varchar(20),@字段2 as int ,@字段3 int)

returns @Time table(列1 varchar(20),列2 datetime,列3 varchar(8000))

as

begin

--一系列操作后,插入数据到@Time

end

select dbo.函数('a',1,2,3)

返回正确结果

现在我就是想把函数参数,换成一个表的变量来代替!!

select dbo.函数(a.column1,a.coulmn2,coulmn3,a.column4) from 表 a

就不行。请问怎么改?一定要改成标量函数吗??

这样的话可以用游标,不过性能很低

if exists(select 1 from [tempdb]..[sysobjects] where id=object_id('[tempdb]..[#]'))

drop table [tempdb]..[#]

go

create table #(列1 varchar(20),列2 datetime,列3 varchar(8000))

declare cur cursor for select column1,column2,column3 from 表

open cur

declare @column1 varchar(20)

declare @column2 varchar(20)

declare @column3 varchar(20)

fetch next from cur into @column1,@column2,@column3

while @@fetch_status=0

begin

insert # select * from [dbo].函数(@column1,@column2,@column3)

fetch next from cur into @column1,@column2,@column3

end

close cur

deallocate cur

select * from #

drop table #

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有