1
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動態地返回結果與改變列或是這種差異之一?
我猜測答案是否定的,但是我從來沒有在任何列表中看到過這個比較和對比特效和udf的。動態sql的好處。 – JeffO
實際限制並不禁止動態SQL,本身就是你不能有副作用。這意味着您不能使用EXEC(無論您是使用EXEC()還是EXEC sp_executeSQL),都需要使用EXEC(動態SQL所需的)。 –