USP_QUEUEPROCESS_GETBUSINESSPROCESSDELETEPROMPTINFO

Provides information used to prompt for confirmation before deleting a business process parameter set used as a queue process step.

Parameters

Parameter Parameter Type Mode Description
@PARAMETERSETID uniqueidentifier IN
@BUSINESSPROCESSID uniqueidentifier IN
@PROMPTRESOURCEKEY nvarchar(100) INOUT
@QUEUEPROCESSCOUNT int INOUT
@QUEUEPROCESSCOUNTTEXT nvarchar(10) INOUT
@FIRSTQUEUEPROCESSNAME nvarchar(255) INOUT
@QUEUEPROCESSCOUNTEXCLUDINGFIRST int INOUT
@QUEUEPROCESSCOUNTEXCLUDINGFIRSTTEXT nvarchar(10) INOUT

Definition

Copy


CREATE procedure dbo.USP_QUEUEPROCESS_GETBUSINESSPROCESSDELETEPROMPTINFO
(
    @PARAMETERSETID uniqueidentifier,
    @BUSINESSPROCESSID uniqueidentifier,
    @PROMPTRESOURCEKEY nvarchar(100) output,
    @QUEUEPROCESSCOUNT int = null output,
    @QUEUEPROCESSCOUNTTEXT nvarchar(10) = null output,
    @FIRSTQUEUEPROCESSNAME nvarchar(255) = null output,
    @QUEUEPROCESSCOUNTEXCLUDINGFIRST int = null output,
    @QUEUEPROCESSCOUNTEXCLUDINGFIRSTTEXT nvarchar(10) = null output
)
with execute as caller
as
    set @PROMPTRESOURCEKEY = null;
    set @QUEUEPROCESSCOUNT = null;
    set @FIRSTQUEUEPROCESSNAME = null;

    select
        @QUEUEPROCESSCOUNT = count(*)
    from
        dbo.QUEUEPROCESS
    where
        @PARAMETERSETID in
            (
                select
                    QUEUEPROCESSSTEP.ELEMENT.value('@ParameterSetID', 'uniqueidentifier')
                from
                    QUEUEPROCESS.STEPLISTXML.nodes('/ArrayOfQueueProcessStep/QueueProcessStep') QUEUEPROCESSSTEP(ELEMENT)
                where
                    @BUSINESSPROCESSID = QUEUEPROCESSSTEP.ELEMENT.value('@BusinessProcessID', 'uniqueidentifier')
            );

    /* subtact one because the message is like "in use by {queue} and {count} others" */
    set @QUEUEPROCESSCOUNTEXCLUDINGFIRST = @QUEUEPROCESSCOUNT - 1;
    set @QUEUEPROCESSCOUNTEXCLUDINGFIRSTTEXT = convert(nvarchar(10), @QUEUEPROCESSCOUNTEXCLUDINGFIRST);

    set @QUEUEPROCESSCOUNTTEXT = convert(nvarchar(10), @QUEUEPROCESSCOUNT);

    if @QUEUEPROCESSCOUNT >= 1
        select top (1)
            @FIRSTQUEUEPROCESSNAME = QUEUEPROCESS.NAME
        from
            dbo.QUEUEPROCESS
        where
            @PARAMETERSETID in
                (
                    select
                        QUEUEPROCESSSTEP.ELEMENT.value('@ParameterSetID', 'uniqueidentifier')
                    from
                        QUEUEPROCESS.STEPLISTXML.nodes('/ArrayOfQueueProcessStep/QueueProcessStep') QUEUEPROCESSSTEP(ELEMENT)
                    where
                        @BUSINESSPROCESSID = QUEUEPROCESSSTEP.ELEMENT.value('@BusinessProcessID', 'uniqueidentifier')
                )
        order by
            QUEUEPROCESS.NAME;

    set @PROMPTRESOURCEKEY =
        case
            when @QUEUEPROCESSCOUNT = 1 then N'DeletePromptInSingleQueue'
            when @QUEUEPROCESSCOUNT = 2 then N'DeletePromptInTwoQueues'
            when @QUEUEPROCESSCOUNT > 2 then N'DeletePromptInMoreThanTwoQueues'
            else N'DeletePromptNotInQueue'
        end;

    return 0;