0

我正在使用 sql server 2008r2 开发人员。我有一个存储过程,它向我从 .NET/C# 代码调用的 db 表中添加一行。它传递了大约 70 个参数(所有字段值)。每天执行大约 5,000 次,持续数月,直到最近才出现问题。该表包含基本股票市场数据,每个代码每天都有自己的行。对于一个特定的股票代码,我收到 sql 错误:

Error converting data type numeric to decimal

我只是手动向表中添加了一行,并逐列输入通过存储过程传递的每个参数值,没有错误。我检查并重新检查了存储过程是否正确配对插入语句中的参数/列,也可以。

所以我的问题......有没有办法使用探查器找到特定的错误参数(或其他错误源,如果我吠叫错误的树)?目前我只知道如何在 sp 执行之前查看所有参数值......但我已经可以在 .NET 端执行此操作了。

4

1 回答 1

0

从错误中我们可以理解为数据类型问题。由于字段多,很难找到错误的参数。一旦我遇到类似的问题,我将解释我的方法。这可能会对您有所帮助。

您可以尝试使用参数数组。Insted 传递单独的参数,您可以使用逗号连接所有字段名称和值。例如'field1name:field1value,field2ame:field2value,....' 并在过程中首先用','分割文本。再次用':'分割值。因此,您将获得字段名称和值。现在在一个循环中,您可以一个一个地更新每个字段。并检查它在哪里抛出错误。

您可以检查此fnSplit函数,并对其进行修改以存储 Field 及其值。然后该函数将返回一个包含所有字段和值的表因此您可以循环使用此表并尝试一一更新。

于 2012-08-11T21:22:54.123 回答