在我的应用程序中,我在多个位置出现奇怪的错误。基本上,我在打电话使用SqlManager和executeNonQuery()
方法数据库的存储过程,但我得到一个异常说:SQL - 来自不在查询中的字符串的语法错误
附近有语法错误“44444”
在Visual Studio。问题是,我的值都不等于'44444',并且该字符串不在存储过程中。当我使用SQL Server Profiler启动跟踪时,我看不到该值。
我试过用Google搜索这个问题,并且附近出现的唯一问题是当一个空值被放到一个外键(我的值都不为空)时出现类似问题。
功能,我调用存储过程:
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'附近的语法。
是的,对不起,我在更改表列名称以便于打印问题(和清晰度) –
可以在调用'executeNonQuery'方法之前将'p'打印为字符串吗? –
什么是SQLParametre –