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 #