2013-01-24 29 views
3

在我的应用程序中,我在多个位置出现奇怪的错误。基本上,我在打电话使用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'附近的语法。

+0

是的,对不起,我在更改表列名称以便于打印问题(和清晰度) –

+0

可以在调用'executeNonQuery'方法之前将'p'打印为字符串吗? –

+2

什么是SQLParametre –

回答

3

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