SQL CLR集成 - 定义函数参数类型

时间:2012-05-07 14:38:02

标签: sql-server parameters clr mismatch

我正在努力将相当复杂的.NET WinForms程序转换为完全集成的SQL Server sprocs和函数集。

我正在开发一个第三方数据库,我根本没有没有控制权。

此数据库中使用的唯一标识符均为numeric(21)。如果这是一个好主意并不重要......我必须在这个约束下工作。

我无法弄清楚如何编写使用这些值的函数。到目前为止,我正在使用System.Decimal这样做,当从.dll本身调用代码时,它似乎工作正常。

但是,在SSMS中,当我检查任何函数时,输入参数数据类型为numeric(18,0)。我假设它假设基于System.Decimal类型,但这是错误的。最终的结果是,当我尝试手动调用该函数时(在SSMS中),我收到以下错误:

  

将数字转换为数据类型为数字的算术溢出错误。

奇怪的是,当我从.dll中调用函数时,调用不要失败。如何覆盖numeric(18,0)指定?

1 个答案:

答案 0 :(得分:0)

伙计,我讨厌进一步谷歌搜索在发布问题后30秒找到答案!!!

我发誓,我已经看了几天......

无论如何,我需要在输入参数中添加SqlFacet

我离开了这个:

<Microsoft.SqlServer.Server.SqlProcedure()> 
Public Shared Sub Check(ByVal ID As Decimal)

对此:

<Microsoft.SqlServer.Server.SqlProcedure()> _
Public Shared Sub Check(<SqlFacet(Precision:=21, Scale:=0)> ByVal ID As Decimal)