SQL Server存储过程和用户定义函数之间存在一些限制。 UDF不能
存储过程可以返回多个记录集,并且每次都不需要返回相同的字段。
create proc custom.sproc_CrazyFields
@ThisItem int
as
begin
if @ThisItem < 10
begin
select 'this' as ThisField, 'that' as ThatField, 'theOther' as theOtherField;
end
else
begin
Select 'theOther' as theOtherField, 'that' as thatField, 'this' as thisField;
end
end
go
exec custom.sproc_CrazyFields 4
exec custom.sproc_CrazyFields 40
内联函数只返回一个select语句。 多语句函数必须声明返回的表。
有没有办法通过使用UDF更改列来动态返回结果,还是这是差异之一?
答案 0 :(得分:3)
抱歉,您无法在函数中使用动态SQL。也许您可以做的是编写一个存储过程,在动态SQL中创建一个函数,调用该函数,然后删除它。但那么为什么不在那时只是内联构建查询。