もともと単純な3行の更新が含まれていたOLEDBコマンドがあります。
raw_CommissionPaid set PolicyNumber =を更新しますか?ここで、PolicyNumber =?
これは問題なく機能し、期待どおりに機能し、すべてが良好でした。
最近、これはうまくいかず、多くの損害を与える可能性があると判断したので、すべてをトランザクションに入れ、影響を受ける行を監視し、予想よりも変更された場合はロールバックすることにしました。これに対する私の更新:
BEGIN TRY BEGIN TRAN UpdateCommissionsPaidPolNo
raw_CommissionPaid set PolicyNumber =を更新しますか?ここで、PolicyNumber =?
IF @@ ROWCOUNT <> 1 RAISERROR('行数<>1'、11、1)
COMMIT TRAN END TRY BEGIN CATCH ROLLBACK TRAN UpdateCommissionsPaidPolNo
PRINT 'UpdateCommissionsPaidPolicyNumber script failed' SELECT ERROR_MESSAGE() as ErrorMessage END CATCH
ただし、これにより、通常表示される「構文エラーまたは一般的なエラー」メッセージが表示されました。以前の問題で、パラメーターが他のSQLに埋め込まれている場合、パラメーターを?にマップできないことがあることを思い出しました。これが問題である可能性があると考えたため、念のためにこれに変更しました。
@FNumber varchar(20)を宣言します@LNumber varchar(20)を宣言します
@FNumber =?@LNumber =?を設定します
BEGIN TRY BEGIN TRAN UpdateCommissionsPaidPolNo
raw_CommissionPaid set PolicyNumber = @FNumberを更新します。ここで、PolicyNumber = @LNumber
IF @@ ROWCOUNT <> 1 RAISERROR('行数<>1'、11、1)
COMMIT TRAN END TRY BEGIN CATCH ROLLBACK TRAN UpdateCommissionsPaidPolNo
PRINT 'UpdateCommissionsPaidPolicyNumber script failed' SELECT ERROR_MESSAGE() as ErrorMessage END CATCH
しかし、これから私はまだ得ます:
構文エラー、権限違反、またはその他の非特定のエラー
印刷またはエラーメッセージが返されたことが原因である可能性があることに気付きましたが、それらを削除しても何も変わりません。それでも失敗します。
SQL Server Management Studioでテストしたので、SQLが有効であることを確認してください。
誰もがこれに直面しましたか?この種の変更を可能にするために変更することになっている設定はありますか?
前もって感謝します