USP_BATCH_DISMISSEXCEPTIONS

Parameters

Parameter Parameter Type Mode Description
@BATCHID uniqueidentifier IN
@EXCEPTIONID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_BATCH_DISMISSEXCEPTIONS (
    @BATCHID uniqueidentifier,
    @EXCEPTIONID uniqueidentifier = null,
    @CHANGEAGENTID uniqueidentifier = null
)
with execute as owner
as
begin

    declare @BASETABLENAME nvarchar(200);

    select @BASETABLENAME = BATCHTYPECATALOG.BASETABLENAME
    from dbo.BATCH
    inner join dbo.BATCHTEMPLATE on BATCH.BATCHTEMPLATEID = BATCHTEMPLATE.ID
    inner join dbo.BATCHTYPECATALOG on BATCHTEMPLATE.BATCHTYPECATALOGID = BATCHTYPECATALOG.ID
    where BATCH.ID = @BATCHID

    declare @sql nvarchar(1000);
    declare @paramdef nvarchar(1000);

    -- OriginCode 3 = import. When dismissing all exceptions in the batch, only worry about the ones

    -- which cannot be resolved automatically, i.e. the exceptions carring an invalid value from import




    set @sql = N'delete ' + quotename(@BASETABLENAME + 'BATCHSYSTEMMESSAGES') + 
        ' from dbo.' + quotename(@BASETABLENAME + 'BATCHSYSTEMMESSAGES') + ' as MSG' +
        ' inner join dbo.' + quotename(@BASETABLENAME) + ' as BASE on BASE.ID = ' + quotename(@BASETABLENAME + 'ID') +
        ' where BATCHID = @BATCHID and ' + 
        '((@EXCEPTIONID is null and ORIGINCODE = 3) or @EXCEPTIONID = MSG.ID)' 


    set @paramdef = N'@BATCHID uniqueidentifier, @EXCEPTIONID uniqueidentifier';

    declare @contextCache varbinary(128);

    /* cache current context information */
    set @contextCache = CONTEXT_INFO();

    /* set CONTEXT_INFO to @CHANGEAGENTID */
    if not @CHANGEAGENTID is null
        set CONTEXT_INFO @CHANGEAGENTID


    exec sp_executesql @sql, @paramdef, @BATCHID = @BATCHID, @EXCEPTIONID = @EXCEPTIONID;

    /* reset CONTEXT_INFO to previous value */
    if not @contextCache is null
        set CONTEXT_INFO @contextCache

end