2013-01-24 25 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

根據評論線程:問題似乎與觸發器附加到表。