如何在表值函數中聲明變量?在表值函數中聲明變量
回答
有兩種風格的表值函數。一個只是一個select語句,一個可以有更多的行而不僅僅是一個select語句。
這不能有一個變量:
create function Func() returns table
as
return
select 10 as ColName
你要做這樣的代替:
create function Func()
returns @T table(ColName int)
as
begin
declare @Var int
set @Var = 10
insert into @T(ColName) values (@Var)
return
end
謝謝,這非常有用 –
第一個例子被稱爲「內聯表值函數」,與多語句表值函數相比,它具有性能優勢,即數據庫服務器可以*用ITVF重新*查詢*內聯*到父查詢中,實質上成爲一個參數化的'VIEW',而MSTVF則更像一個不透明的存儲過程(雖然與sprocs相比有其自身的優勢)。內聯函數應該優於MSTVF。如果您確實需要計算並存儲中間值(例如複雜標量函數表達式的結果),則使用子查詢。 – Dai
也許值得一提的是,如果你用來填充你想要設置的變量的結果在任何方面都是可以通用的,那麼你可以考慮編寫一個單獨的函數來生成它。 這將允許您使用上述@Dai所描述的ITVF及其所有優點,同時仍將動態生成的值插入到函數中。我只是在上述解決方案的幫助下編寫了一個函數(謝謝@MikaelEriksson!),它將其參數之一傳遞給一個輔助函數,以免我必須使用MSTVF表單。 – naughtilus
- 1. 在函數中聲明變量
- 2. 在函數中聲明靜態變量
- 3. 在Javascript函數中聲明變量
- 4. 在SQL函數中聲明變量
- 5. 在Perl函數中聲明變量
- 6. 聲明變量值
- 7. C++中的函數和變量聲明
- 8. 函數體中的Python變量「聲明」
- 9. C++在變量前聲明函數
- 10. 在函數之外聲明變量
- 11. SQL函數 「聲明標量變量」
- 12. 是否在變量衝擊表現中聲明函數?
- 13. C++函數聲明常數變量
- 14. 在SQL中聲明多個值變量
- 15. 變量/函數聲明之前
- 16. javascript函數範圍,變量聲明
- 17. 將函數聲明爲變量
- 18. 自動聲明函數/變量
- 19. 聲明變量的函數二郎
- 20. 函數'yylex':'變量'未聲明
- 21. 無法從PHP函數聲明變量?
- 22. 堆棧變量或函數聲明
- 23. 聲明無值的變量
- 24. 變量聲明和賦值
- 25. 在VBA中聲明變量註冊表?
- 26. C++變量聲明將被視作一個函數聲明
- 27. 在Fortran中聲明變量
- 28. 在Ruby中聲明變量?
- 29. 在DOJO中聲明變量
- 30. 在flex中聲明變量
內聯或多語句?像* MSDN *描述他們? – gbn
@YogeshBhadauirya荒謬的「使用搜索引擎」響應的問題是* this *是搜索引擎指向的地方。一種無限的遞歸情況。最好刪除頁面或僅回答問題。 – Volvox
這個問題值得更多的愛:重新開放,接受下面的答案。它實際上*是一個真正的問題。 – Askolein