0

我正在将一个相当复杂的 .NET WinForms 程序转换为一个完全集成的 SQL Server 存储过程和函数集。

我正在开发一个我完全无法控制的第 3 方数据库。

整个数据库中使用的唯一标识符都是numeric(21). 这是否是一个好主意并不重要......我必须在这个限制内工作。

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

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

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

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

4

1 回答 1

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)
于 2012-05-07T14:47:45.707 回答