3

私のアプリケーションでは、複数の場所で奇妙なエラーが発生します。基本的に、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」の近くの構文が正しくありません。

4

1 に答える 1

3

コメントスレッドによると:問題はテーブルにアタッチされたトリガーにあるようです。

于 2013-01-24T21:12:26.153 に答える