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 #