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 回答