USP_BBNC_GETBATCHFORMAPPINGRULE
Returns an appropriate existing batch for a mapping rule and owner, if one already exists in the system.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@BATCHTEMPLATEID | uniqueidentifier | IN | |
@MAPPINGRULEID | uniqueidentifier | IN | |
@OWNERID | uniqueidentifier | IN | |
@MAXTRANSACTIONS | int | IN |
Definition
Copy
create procedure dbo.USP_BBNC_GETBATCHFORMAPPINGRULE
(
@BATCHTEMPLATEID uniqueidentifier,
@MAPPINGRULEID uniqueidentifier,
@OWNERID uniqueidentifier,
@MAXTRANSACTIONS int
)
with execute as owner
as
set nocount on;
declare @TABLENAME nvarchar(128);
declare @SQL nvarchar(max);
declare @PARMS nvarchar(max);
select top (1)
@TABLENAME = BATCHTYPECATALOG.BASETABLENAME
from
dbo.BATCHTYPECATALOG
inner join dbo.BATCHTEMPLATE on BATCHTEMPLATE.BATCHTYPECATALOGID = BATCHTYPECATALOG.ID
where
BATCHTEMPLATE.ID = @BATCHTEMPLATEID
order by
BATCHTEMPLATE.DATEADDED;
if not @TABLENAME is null
begin
set @SQL =
N'select top (1) BATCH.ID as [BATCHID], ' +
N'(select count(ID) from dbo.' + @TABLENAME + ' where ' + @TABLENAME + '.BATCHID = BATCH.ID) as [COUNT] ' +
N'from dbo.BATCH inner join dbo.NETCOMMUNITYMAPPINGRULEBATCH on NETCOMMUNITYMAPPINGRULEBATCH.BATCHID = BATCH.ID ' +
N'inner join dbo.BATCHWORKFLOWSTATE on BATCH.BATCHWORKFLOWSTATEID = BATCHWORKFLOWSTATE.ID ' +
N'where NETCOMMUNITYMAPPINGRULEBATCH.MAPPINGRULEID = @MAPPINGRULEID ' +
N'and BATCH.STATUSCODE = 0 and BATCH.ORIGINATINGBATCHID is null and BATCHWORKFLOWSTATE.ISINITIALSTATE = 1 ' +
N'and BATCH.APPUSERID = @OWNERID ' +
N'and (select count(ID) from dbo.' + @TABLENAME + ' where ' + @TABLENAME + '.BATCHID = BATCH.ID) < @MAXTRANSACTIONS ' +
N'and APPLOCK_TEST(''public'', upper(BATCH.ID), ''Exclusive'', ''Session'') = 1';
set @PARMS = N'@OWNERID uniqueidentifier, @MAXTRANSACTIONS int, @MAPPINGRULEID uniqueidentifier';
exec sp_executesql @SQL, @PARMS, @OWNERID = @OWNERID, @MAXTRANSACTIONS = @MAXTRANSACTIONS, @MAPPINGRULEID = @MAPPINGRULEID;
end
else
select cast(null as uniqueidentifier) as [BATCHID], 0 as [COUNT];