2009-10-16 55 views
0

我如何判斷這個問題?SQL Server中UDF的動態​​表格

當我嘗試exec的這一個:select dbo.GetDataById()

我得到一個錯誤信息:

只有函數和擴展存儲過程可以從函數中執行。

+1

你究竟在做什麼?這個功能沒有意義。 – MartW 2009-10-16 14:53:34

回答

0

您不能在函數中使用動態創建的SQL。你必須爲此使用存儲過程。

但在你的情況下,我不明白你爲什麼甚至把你的查詢變成一個變量。

+0

這只是一個例子.. 我有太多的長請求(超過4000個符號),超過2000個數據庫中的表,並且很多查詢是不確定的,他們中的大多數在飛行中生成.. – Sergey 2009-10-16 14:50:23

+0

那麼,那麼你需要存儲過程。 *除非*您還需要加入結果並在'SELECT'語句中使用它們。然後,你要麼虧本,要麼遇到一些非常難看的解決方案。 – Joey 2009-10-16 15:02:18

2

this post通過厄蘭Sommarskog,SQL服務器MVP:

不能使用動態SQL從 寫在 T-SQL中使用自定義的功能。這是因爲您不允許在UDF中執行任何可以更改數據庫狀態(如 UDF可能作爲 查詢的一部分被調用)的任何內容。由於您可以從 動態SQL(包括更新)中執行任何操作,因此很明顯爲什麼動態SQL不允許使用 。