[英]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.