我正在将一个相当复杂的 .NET WinForms 程序转换为一个完全集成的 SQL Server 存储过程和函数集。
我正在开发一个我完全无法控制的第 3 方数据库。
整个数据库中使用的唯一标识符都是numeric(21)
. 这是否是一个好主意并不重要......我必须在这个限制内工作。
我无法弄清楚如何编写使用这些值的函数。到目前为止,我习惯System.Decimal
这样做,当从 .dll 本身调用代码时,这似乎工作正常。
但是,在 SSMS 中,当我检查任何函数时,输入参数数据类型为numeric(18,0)
. 我假设它是根据System.Decimal
类型假设的,但这是错误的。最终结果是,当我尝试手动调用该函数(在 SSMS 中)时,出现以下错误:
将数字转换为数字数据类型的算术溢出错误。
奇怪的是,当我从 .dll 中调用函数时,调用不会失败。如何覆盖numeric(18,0)
指定?