![](/img/trans.png)
[英]does SWITCHING FMTONLY impacts performance. inside stored procedure? (entity framework)
[英]Stored procedure with temporary tables, Entity Framework updating the stored procedure not working - SET FMTONLY OFF
我有一個包含多個臨時表的存儲過程,當我嘗試在 Entity Framework 中導入它時,它沒有創建復雜類型,並且出現此錯誤:
選定的存儲過程或 function 不返回任何列
當我用谷歌搜索時,我發現在存儲過程中添加這段代碼SET FMTONLY OFF
將在我的 EDMX 中創建復雜類型。 我能夠做到。
添加SET FMTONLY OFF
后,現在在實體框架中一切正常。
現在我的問題是,將這段代碼添加到包含多個臨時表的存儲過程中是否存在安全威脅?
謝謝你。
您不想只是 SET FMTONLY OFF,因為這可能會產生意想不到的后果,但是您可以返回正確形狀的空結果集,然后在存儲過程的開頭關閉 FMTONLY 並返回。
例如
if 1=0 --this will only run in FMTONLY is ON
begin
select cast(1 as decimal(12,0) a, cast('x' as nvarchar(20)) b -- . . .
set fmtonly off
return;
end
由於 FMTONLY 忽略控制流語句,它將在開始/結束時運行代碼。 客戶端將獲得一個空的結果集,然后該過程存在。 您必須關閉 FMTONLY 否則將不會執行return
,並且稍后您的臨時表會出錯。
當這個存儲過程在沒有 FMTONLY 的情況下運行時,將評估if 1=0
,並跳過該塊。
但是,在更新 EF model 時為沒有臨時表的存儲過程切換存儲過程是一種有效的替代方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.