在我的應用程序中,我在多個位置出現奇怪的錯誤。基本上,我在打電話使用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 –