唤醒调用返回表数据类型的用户定义函数
可唤醒调用返回表 (table) 的用户定义函数,其中在 SELECT、INSERT、UPDATE 或 DELETE 语句的 FROM 子句中允许表表达式。可在调用返回表的用户定义函数后加上可选的表别名。下例说明如何唤醒调用函数 fn_Products 和指派别名: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 语句上打开的唯一游标类型。引用返回表 (table) 的用户定义函数的 SELECT 语句唤醒调用该函数一次。
可唤醒调用返回表 (table) 的用户定义函数,其中在 SELECT、INSERT、UPDATE 或 DELETE 语句的 FROM 子句中允许表表达式。可在调用返回表的用户定义函数后加上可选的表别名。下例说明如何唤醒调用函数 fn_Products 和指派别名: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 语句上打开的唯一游标类型。引用返回表 (table) 的用户定义函数的 SELECT 语句唤醒调用该函数一次。
表
coulumn1 coulun2 coumn3
a 1 2
b 1 3
c 2 4
把这个表中的,三列数据传递到我的表中的参数去select * from dbo.函数(参数1,参数2,参数3)函数返回的是一个表!!!!!
returns @Time table(列1 varchar(20),列2 datetime,列3 varchar(8000))
as
begin
--一系列操作后,插入数据到@Time
endselect dbo.函数('a',1,2,3) 返回正确结果
现在我就是想把函数参数,换成一个表的变量来代替!!select dbo.函数(a.column1,a.coulmn2,coulmn3,a.column4) from 表 a就不行。请问怎么改?一定要改成标量函数吗??
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 curselect * from #
drop table #