--:SetVar Procedure "AUX:InExternalTransaction.Verify"
if exists( select * from [sysobjects] (nolock) where [type]='P' and [name]=N'AUX:InExternalTransaction.Verify' )
   drop procedure [AUX:InExternalTransaction.Verify]
GO
/* Translated by $SQLTRANS utility (SQL-file technology). Method author: Sergei Y.Kitáev.
** Script translation date-time: 2022-11-27 00:29:29.24 (stamp of SQL-file generation). */
create procedure [AUX:InExternalTransaction.Verify] @ProcedureName nvarchar(max)
AS
/*==================================================================================================
# SQLAUX scripting library | Author: Sergei Y.Kitáev
----------------------------------------------------------------------------------------------------
#
# CHECKING, THAT STORED PROCEDURE IS EXECUTING UNDER POSITIVE TRANSACTION COUNT (>0):
#
# On-fail behaviour —— exception with localized message
#
# === Usage: ===
# exec [AUX:InExternalTransaction.Verify] <Procedure name>
#
==================================================================================================*/
begin begin try set xact_abort off; set ansi_nulls,ansi_null_dflt_on,quoted_identifier,arithabort,nocount on; set implicit_transactions off; declare @initial_tran_count_aux int, @is_local_tran_open_aux bit; select @initial_tran_count_aux=@@trancount, @is_local_tran_open_aux=0; end try begin catch throw; end catch; begin try
----------------------------------------------------------------------------------------------------

if @ProcedureName is null
   exec [AUX:RaiseIncorrectProcedureCall] 'AUX:InExternalTransaction.Verify'

----------------------------------------------------------------------------------------------------

if @@TRANCOUNT > 0 return

declare @ErrorMessage nvarchar(max)
set @ErrorMessage = dbo.[AUX:TechLocalText](
   'Procedure ['+@ProcedureName+'] must wokr inside outer transaction.',
   N'Процедура ['+@ProcedureName+N'] должна выполняться внутри внешней транзакции.' )
raiserror (@ErrorMessage,11,1)

----------------------------------------------------------------------------------------------------
if @is_local_tran_open_aux=1 raiserror ('Not closed local transaction was detected, previously opened by BEGIN_TRANSACTION_AUX macro.',11,1); end try begin catch if @is_local_tran_open_aux=1 and (@@trancount>@initial_tran_count_aux or xact_state()=-1) rollback transaction; set @is_local_tran_open_aux=0; throw; end catch; end
/*================================================================================================*/
GO
/*
exec [AUX:InExternalTransaction.Verify] 'XProc'
*/
