私のアプリケーションでは、複数の場所で奇妙なエラーが発生します。基本的に、SqlManagerとexecuteNonQuery()
メソッドを使用してデータベース内のストアドプロシージャを呼び出しますが、次のような例外が発生します。
'44444'付近の構文が正しくありません
VisualStudioで。問題は、私の値はどれも「44444」と等しくなく、その文字列はストアドプロシージャに含まれていないということです。SQL Serverプロファイラーを使用してトレースを開始すると、値が表示されません。
私はこの問題をグーグルで調べてみましたが、これに近づいた唯一の問題は、null値が外部キーに入れられたときに同様の問題を抱えている人でした(私の値はどれもnullではありません)。
ストアドプロシージャを呼び出す関数:
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)
クエリ/ストアドプロシージャにない文字列によって構文エラーがスローされるという同様の問題が発生したことはありますか?
編集:VisualStudio2012とSQLServerManagement Studio 2012を使用しており、列の名前の変更によるストアドプロシージャのタイプミスを修正しました。
更新
Management Studioでストアドプロシージャを実行した後、そこにもエラーが表示されたので、vbコードにエラーが含まれていないはずです。
Management Studioによってスローされるエラーも、VS2012の例外で発生するエラーとは異なります。
メッセージ102、レベル15、状態1、プロシージャtbInvc_UTrig、行14
「44444」の近くの構文が正しくありません。