1

ADO.NET でテーブル値パラメーターを使用していますが、ストアド プロシージャが正しく機能していません。他に2つあり、正常に動作します。コードとテーブルの順序などを比較しましたが、すべて問題ないようです。

データはコードからストアド プロシージャに渡され、エラーは発生しません。単に挿入するだけではありません。私が見逃していることを知らない何かがあるのだろうか... 私は完全に迷っている.. 理解するのに多くの時間を費やしたが、できなかった.

すべてがうまくいっているように見えますが、エラーはありませんが、まだ機能していません。

タイプは次のとおりです。

CREATE TYPE [dbo].[NameTableType] AS TABLE(
[ID] [int] NULL,
[MYID] [int] NULL,
[Name] [varchar](50) NULL,
    )
    GO

そしてこれが私のテーブルです

ALTER PROCEDURE [dbo].[Insert]
(
@TVP as NameTableType readonly
)                                      
AS
  BEGIN TRANSACTION
  BEGIN TRY
      INSERT INTO [dbo].[MYTABLE]
      ([ID],[MYID],[NAME])
      SELECT [ID],[MYID],[NAME]
       from @TVP
      COMMIT TRANSACTION
  END TRY

  BEGIN CATCH
      ROLLBACK TRANSACTION
  END CATCH 

データベースで注意すべき点はありますか?それは何ですか? 手順が失敗した場合にエラーを返す方法はありますか?

どんなアドバイスでも大歓迎です。

ありがとう

4

2 に答える 2

2

エラーをキャッチして破棄する代わりに、次のことを試してください。

BEGIN CATCH
    ROLLBACK TRANSACTION;
    DECLARE @msg NVARCHAR(MAX) = ERROR_MESSAGE();
    RAISERROR(@msg, 11, 1);
    RETURN;
END CATCH

現在、あなたは基本的に「エラーが発生した場合は無視してください」と言っています。

于 2013-04-02T17:50:04.683 に答える
1
  1. 問題の原因となっているトリガーがある場合は確認してください。
  2. この状況では、Sql Profiler が役立ちます。
于 2013-04-02T17:56:09.710 に答える