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 #
|