我在ADO.NET中使用表值参数,我的存储过程无法正常工作。我有另外两个工作正常。我比较了代码表等的顺序,他们似乎都没问题。
数据从我的代码传递到存储过程,没有错误,它不会简单地插入。我想知道是否有一些我不知道的东西我错过了...我完全迷失了...花了很多时间试图想但不能。
一切似乎都很好没有任何错误但它没有用。
这是类型:
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
我的数据库中是否应该谨慎,这是什么?如果程序失败,有没有办法返回错误?
非常感谢任何建议。
由于
答案 0 :(得分:2)
不要只是捕获并丢弃错误,请尝试:
BEGIN CATCH
ROLLBACK TRANSACTION;
DECLARE @msg NVARCHAR(MAX) = ERROR_MESSAGE();
RAISERROR(@msg, 11, 1);
RETURN;
END CATCH
现在你基本上说“如果有错误,就忽略它。”
答案 1 :(得分:1)