亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

拉丁的傳說 2019-02-13 15:11:29
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表



查看完整回答
反對 回復 2019-03-10
?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

SqlServer的自定義函數不能執行insert、更新操作;不能使用動態sql。

可以考慮存儲過程。

查看完整回答
反對 回復 2019-03-10
  • 2 回答
  • 0 關注
  • 1348 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號