sql server 自定義函數不支持動態sql怎么理解呢
2 回答

慕勒3428872
TA貢獻1848條經驗 獲得超6個贊
因為自定義函數是經過建立的時候是編譯的,
所以像getdate()這些不確定因素的值,是隨時改變的,所以不允許
推薦:
將類似getdate()之類的可變的因素使用參數帶入進函數
執行的時候,再使用getdate(),如:
select dbo.MyFunction(getdate()) from 表
舉個例子:
建立自定義函數,如果今天是5號,字段1就等于字段2,否則還等于字段1
以下的寫法是錯誤的:
create function MyFunction(@字段1 int ,@字段2 int)
returns int
as
if day(getdate())=5
return @字段2
else return @字段1
這樣寫才是正確的:
create function MyFunction(@字段1 int ,@字段2 int,@date datetime)
returns int
as
if day(@date)=5
return @字段2
else return @字段1
調用時:
select 字段1,字段2,dbo.MyFunction(字段1,字段2,getdate()) from表
- 2 回答
- 0 關注
- 1348 瀏覽
添加回答
舉報
0/150
提交
取消