我正在努力将相当复杂的.NET WinForms程序转换为完全集成的SQL Server sprocs和函数集。
我正在开发一个第三方数据库,我根本没有没有控制权。
此数据库中使用的唯一标识符均为numeric(21)
。如果这是一个好主意并不重要......我必须在这个约束下工作。
我无法弄清楚如何编写使用这些值的函数。到目前为止,我正在使用System.Decimal
这样做,当从.dll本身调用代码时,它似乎工作正常。
但是,在SSMS中,当我检查任何函数时,输入参数数据类型为numeric(18,0)
。我假设它假设基于System.Decimal
类型,但这是错误的。最终的结果是,当我尝试手动调用该函数时(在SSMS中),我收到以下错误:
将数字转换为数据类型为数字的算术溢出错误。
奇怪的是,当我从.dll中调用函数时,调用不要失败。如何覆盖numeric(18,0)
指定?
答案 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)