I'm trying to run multiple inserts on different tables and I want them all to rollback if anything fails. Now I have the sql code working and it's rolling back correctly, but it is not raising the error over odbc. JMP just returns a missing value. Anyone know how to make sure the raiserror() shows up correctly over ODBC? It raises the error correctly if I run the same code directly in SQL.
dbc = Create database connection("DRIVER=SQL SERVER;SERVER=.\;Database=Test");
rfail = executeSQL(dbc,
"
DECLARE @TransactionName varchar(20) = 'Transaction1';
BEGIN TRY
BEGIN TRAN @TransactionName
INSERT INTO [dbo].Test1
(A --varchar
,B --Int
)
VALUES
('Test Fail'
,1
)
DECLARE @ID bigint
SELECT @ID = SCOPE_IDENTITY()
INSERT INTO [dbo].Test2
(T1ID --Test1 ID
,A --varchar
)
VALUES
(@ID
,14
)
COMMIT TRAN @TransactionName
END TRY
BEGIN CATCH
DECLARE @ErrorMessage NVARCHAR(4000);
DECLARE @ErrorSeverity INT;
DECLARE @ErrorState INT;
IF @@TRANCOUNT > 0
ROLLBACK TRAN @TransactionName
SELECT
@ErrorMessage=ERROR_MESSAGE(),
@ErrorSeverity=ERROR_SEVERITY(),
@ErrorState=ERROR_STATE();
RAISERROR(@ErrorMessage, @ErrorSeverity, @ErrorState)
END CATCH
",
);
close database connection(dbc);