如果我有一個SQL語句,像這樣的:您可以創建CLR UDT以允許跨數據庫共享表類型嗎?
CREATE TYPE [dbo].[typeRateLimitVariables] AS TABLE(
[vchColumnName] [varchar](250) NULL,
[decColumnValue] [decimal](25, 10) NULL
)
而且我用它作爲表變量的UDF在數據庫中,我有足夠的範圍。假設我想從同一服務器上的另一個數據庫中調用標量UDF,那麼最終會出現未知類型的錯誤。
我試着在調用數據庫上創建類型,但obv。那麼我得到一個類型不匹配,因爲雖然每個UDT都有相同的名稱,但它們有不同的作用域,因此是不同的類型。
我知道你可以創建CLR類型,將程序集註冊到SQL Server,然後通用訪問自定義類型。我的想法是創建一個類型爲「TABLE」的CLR UDT,但是我看不出如何實現這一點,因爲我知道它必須是CLR類型「SqlDbType.Structured」;
我的問題是:
- 有不使用CLR在SQL創建全球範圍內2008 R2的表變量的方式,如果不...
- 我如何定義一個UDT在C#CLR,其中UDT本質上是一個UDT「正如表」
似乎題外話大多數UDT討論,但對於問題#1 - 它必須是一個表變量?變量(包括表變量)對調用上下文是本地的 - 即命令。您可以使用完整符號([數據庫]。[角色]。[對象])編寫多數據庫操作,只要它們存在於一個查詢中,就可以將數據戳入和導出表變量。 #temp表也可能工作。 – jklemmack
是的,在這種特殊情況下,我希望有這種類型可以隨身攜帶,這就是爲什麼它需要成爲UDT;解決方案非常大 - 所以是的; #temp通常是一個很好的解決方案,但是在這個特別的解決方案中,我們在整個演出中都使用了UDT,而不是簡單地使用即席查詢。 –