组织SQL Batch语句

时间:2011-10-21 13:17:23

标签: sql tsql sql-server-2000

我有一个tsql代码,基本上是一堆插入和更新语句包装到存储过程中并将其作为SP执行,但是如果一个插入失败则整个SP失败,那么有更好的方法继续执行其余的一个插入失败的代码。

代码是这样的:

Create SP As 
{
insert into Table A 
--
--

insert into Table B
--
--

Insert into Table C
--
}

1 个答案:

答案 0 :(得分:3)

也许你可以将每个插入指令都包含在TRY CATCH块中

DECLARE @Errors TABLE(
Instruction VARCHAR(MAX),
Error VARCHAR(MAX)
)

BEGIN TRY
INSERT INTO TABLE A
END TRY
BEGIN CATCH
INSERT INTO @Errors VALUES ('TABLE A', ERROR_MESSAGE())
END CATCH

BEGIN TRY
INSERT INTO TABLE B
END TRY
BEGIN CATCH
INSERT INTO @Errors VALUES ('TABLE B', ERROR_MESSAGE())
END CATCH

--....

SELECT * FROM @Errors

希望这有帮助。