I have a stored procedure like this which inserts records into few tables
CREATE PROCEDURE [dbo].[DEL_BPM_RT_DATA_BY_FILTERS] ()
AS
BEGIN
DECLARE @ARC_PROCESS_INSTANCE_DATA VARCHAR(MAX);
DECLARE @ARC_PROCESS_ACTIVITY VARCHAR(MAX);
DECLARE @ARC_BUSINESS_IDENTIFIER_STRING VARCHAR(MAX);
SET @ARC_PROCESS_INSTANCE_DATA = 'INSERT INTO PROCESS_INSTANCE_DATA_ARC SELECT * FROM PROCESS_INSTANCE_DATA WHERE INSTANCE_ID IN (SELECT ID FROM #TEMP_PROCESS_INSTANCE)';
SET @ARC_PROCESS_ACTIVITY = 'INSERT INTO PROCESS_ACTIVITY_ARC SELECT * FROM PROCESS_ACTIVITY WHERE INSTANCE_ID IN (SELECT ID FROM #TEMP_PROCESS_INSTANCE)';
SET @ARC_BUSINESS_IDENTIFIER_STRING = 'INSERT INTO BUSINESS_IDENTIFIER_STRING_ARC SELECT * FROM BUSINESS_IDENTIFIER_STRING WHERE INSTANCE_ID IN (SELECT ID FROM #TEMP_PROCESS_INSTANCE)';
BEGIN
EXEC (@ARC_PROCESS_INSTANCE_DATA);
EXEC (@ARC_PROCESS_ACTIVITY);
EXEC (@ARC_BUSINESS_IDENTIFIER_DATE);
END;
This stored procedure is called from JAVA like this.
try {
.
.
.
dbConnection.setAutoCommit(false);
CallableStatement stmt = dbConnection.prepareCall("{call DEL_BPM_RT_DATA_BY_FILTERS}");
stmt.execute();
dbConnection.commit();
} catch (SQLException e) {
e.printStacktrace();
}
Exception is not getting thrown when
EXEC (@ARC_PROCESS_ACTIVITY);
EXEC (@ARC_BUSINESS_IDENTIFIER_DATE);
failed to execute(required tables not created so that they fail). However exception is thrown if the first executable statement fails i.e EXEC (@ARC_PROCESS_INSTANCE_DATA);
How to get exception thrown in all the cases whether it is first statement failure or any statement?
I don't want to put that stored procedure in transaction like BEGIN TRANSACTION
.
I'm using sql server 2008 R2
Thanks in advance.