我正在使用带有 SQL Server 的 sqlcmd 工具来执行脚本。脚本添加/更新记录。如果脚本抛出错误,我需要 sqlcmd 停止执行并给出非 0 返回值。我认为以下内容会起作用,但事实并非如此。
DECLARE @intErrorCode INT
BEGIN TRAN T1;
SET IDENTITY_INSERT dbo.SomeTable ON
INSERT INTO dbo.SomeTable(some_type_id,some_type,code_definition,use_some_lookup,created_by,created_on,modified_by,modified_on,org_some)
VALUES(0,'yadayada','None','N','system',GETDATE(),'system',GETDATE(),'N')
SELECT @intErrorCode = @@ERROR
IF (@intErrorCode <> 0) GOTO PROBLEM
SET IDENTITY_INSERT dbo.SomeTable OFF
UPDATE dbo.SomeTable
SET some_type = 'Contract Analytical'
WHERE some_type_id = 2
SELECT @intErrorCode = @@ERROR
IF (@intErrorCode <> 0) GOTO PROBLEM
PROBLEM:
IF (@intErrorCode <> 0) BEGIN
PRINT 'Unexpected error occurred!'
ROLLBACK TRAN
SELECT @intErrorCode
RETURN
END
COMMIT TRAN T1;