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
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
SELECT OD.OrderID, OD.ProductID, fnPr.Price
FROM OrderDetails as OD, fn_Products('Discontinued') AS fnPr
WHERE OD.ProductID = fnPr.ProductID
ORDER BY OD.OrderID, OD.ProductID
当在子查询的 FROM 子句中唤醒调用返回表的用户定义函数时,函数参数不能引用外部查询中的任何列。
若 SELECT 语句的 FROM 子句引用了返回表的用户定义函数,则静态的只读游标是可在该 SELECT 语句上打开的唯一游标类型。