3

在我的应用程序中,我在多个位置收到一个奇怪的错误。基本上,我使用 SqlManager 和executeNonQuery()方法调用数据库中的存储过程,但我得到一个异常说:

'44444' 附近的语法不正确

在 Visual Studio 中。问题是,我的值都不等于 '44444' 并且该字符串不在存储过程中。当我使用 SQL Server Profiler 开始跟踪时,我看不到该值。

我试过用谷歌搜索这个问题,唯一的问题是有人在将空值放入外键时遇到类似问题(我的值都不是空的)。

我调用存储过程的函数:

Try
    Dim p As New List(Of SQLParametre)()
    p.Add(New SQLParametre("@InvcNum", invcNum, SQLParametreType.String))
    p.Add(New SQLParametre("@Sale", sale, SQLParametreType.Decimal))
    p.Add(New SQLParametre("@Commission", commission, SQLParametreType.Decimal))
    p.Add(New SQLParametre("@UpdtDate", DateTime.Today, SQLParametreType.Date))
    m_Manager.executeNonQuery("TheSP", p)
    Return True
Catch ex As Exception
    m_Log.WriteLog("theSP crashed", ex.Message)
    Return False
End Try

存储过程:

ALTER PROCEDURE [dbo].[TheSP]
@InvcNum varchar(9),
@Sale money,
@Commission money,
@UpdtDate as smalldatetime
AS
UPDATE tbInvc SET
  Sale = Sale + @Sale,
  Comm = Comm + @Commission,
  updateDate = @UpdtDate
WHERE (Num = @InvcNum)

有人遇到过类似的问题,即不在查询/存储过程中的字符串引发语法错误吗?

编辑:我正在使用 Visual Studio 2012 和 SQL Server Management Studio 2012,并修复了存储过程中因更改列名称而导致的拼写错误。

更新

在 Management Studio 中运行存储过程后,我看到那里也出现了错误,所以错误不应该出现在 vb 代码中。

Management Studio 引发的错误也与我在 VS2012 中的异常中得到的错误不同:

消息 102,级别 15,状态 1,过程 tbInvc_UTrig,第 14 行
“44444”附近的语法不正确。

4

1 回答 1

3

根据评论线程:问题似乎与附加到表的触发器有关。

于 2013-01-24T21:12:26.153 回答