[英]SQLCLR Stored procedure datatypes
由於它的復雜性,我決定創建一個SQLCLR存儲過程來替換SQL Server存儲過程。
問題:編寫CLR存儲過程時,是否有任何數據類型或API限制? 如果是這樣,有人可以給我任何建議。
我打算使用var, List<T>, DataTable, DataRow[]
和Queue
以及一些LINQ
擴展方法。
實際上,這是一個相當開放的問題,因為.NET / CLR代碼本身可以做什么以及可以/應該將哪些數據類型用作輸入/輸出參數都存在細微差別。
從基礎開始,細微差別取決於您所使用的SQL Server版本以及所詢問的特定問題。
資料類型:
支持的.NET Framework庫 :( 添加了兩個庫,如下所述 )
資料類型:
Sql*
類型(例如SqlInt32
),則使用它;否則,使用它。 不要在C#方法中使用.NET類型作為輸入參數(例如int
或Int32
)。 僅當沒有Sql*
類型映射到SQL Server數據類型時,才使用本機.NET類型。 此異常的兩個常見實例是使用object
(可以是DbNull.Value
)映射到SQL_VARIANT
,以及DateTime
/ DateTime?
哪個映射到DATETIME2
。 PERMISSION_SET
的UNSAFE
進入你的代碼還駐留的數據庫。 您可能還需要將數據庫設置為TRUSTWORTHY ON
,以便將它們設置為UNSAFE
因為從Microsoft提供的DLL中似乎不可能(無論如何,我也找不到)。 List<T>
, DataTable
和DataRow[]
時,我沒有看到任何問題。 Queue
或var
但是使用它們時不會出現任何問題。 LINQ
已經有好幾年了,但似乎回想起唯一的問題是它沒有包含在SQL Server 2005支持的框架庫集中,因此對我不起作用,因為我需要支持2005-2014,但是對於任何不需要擔心SQL Server 2005的人都應該可以。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.