USP_QUEUEPROCESS_GET_MOST_RECENT_STATUS

Returns status information about the last time a Queue Process was run.

Parameters

Parameter Parameter Type Mode Description
@QUEUEPROCESSID uniqueidentifier IN
@STATUS_AVAILABLE bit INOUT
@STATUSCODE tinyint INOUT
@STATUS_IS_COMPLETED bit INOUT
@STATUS_IS_RUNNING bit INOUT
@STATUS_IS_DID_NOT_FINISH bit INOUT
@STATUS_IS_RESULTS_CLEARED bit INOUT
@HASEXCEPTIONS bit INOUT
@STARTEDON datetime INOUT
@ENDEDON datetime INOUT
@STATUSTEXT nvarchar(25) INOUT
@SERVERNAME nvarchar(255) INOUT
@LASTMESSAGE nvarchar(max) INOUT

Definition

Copy



CREATE PROCEDURE dbo.USP_QUEUEPROCESS_GET_MOST_RECENT_STATUS

/*
Returns status information about the last time a Queue Process was run.
*/


@QUEUEPROCESSID uniqueidentifier,

@STATUS_AVAILABLE bit=null output,

@STATUSCODE     tinyint = NULL  output
/*
0=Completed
1=Running
2=Did not Finish
3=Results Cleared
*/
,

@STATUS_IS_COMPLETED bit=null output,
@STATUS_IS_RUNNING bit=null output,
@STATUS_IS_DID_NOT_FINISH bit=null output,
@STATUS_IS_RESULTS_CLEARED bit=null output,

@HASEXCEPTIONS bit=null output,

@STARTEDON datetime = null output,

@ENDEDON datetime = null output,

@STATUSTEXT nvarchar(25)= null output,

@SERVERNAME nvarchar(255)=null output,

@LASTMESSAGE nvarchar(max)=null output

as

SET NOCOUNT ON;

SET @STATUS_AVAILABLE=0;
SET @STATUS_IS_COMPLETED=0;
SET @STATUS_IS_RUNNING=0;
SET @STATUS_IS_DID_NOT_FINISH=0;
SET @STATUS_IS_RESULTS_CLEARED=0;
SET @HASEXCEPTIONS=0;

DECLARE @BUSINESSPROCESSSTATUSID uniqueidentifier;


select top 1 
    @BUSINESSPROCESSSTATUSID = QPS.ID

from
    dbo.QUEUEPROCESSSTATUS AS QPS

where 
    QPS.PARAMETERSETID=@QUEUEPROCESSID

order by
    QPS.DATEADDED DESC;


if @BUSINESSPROCESSSTATUSID is null 
    RETURN 0; --no status available



SET @STATUS_IS_RUNNING=CASE WHEN APPLOCK_TEST('public',upper(cast(@BUSINESSPROCESSSTATUSID as nvarchar(36))),'Exclusive','Session')=0 THEN 1 ELSE 0 END;


declare @NUMBEROFEXCEPTIONS int;

SELECT
@STATUS_AVAILABLE=1,
@STATUSCODE=STATUSCODE,
@STATUSTEXT=[STATUS],
@SERVERNAME=SERVERNAME,
@NUMBEROFEXCEPTIONS=NUMBEROFEXCEPTIONS,
@STARTEDON=STARTEDON,
@ENDEDON=@STARTEDON,
@LASTMESSAGE=ERRORMESSAGE
from dbo.BUSINESSPROCESSSTATUS
WHERE ID=@BUSINESSPROCESSSTATUSID;

IF @STATUSCODE=1 AND @STATUS_IS_RUNNING=0 --the status table is not up to date, so override

BEGIN
    SET @STATUSCODE=2;
    SET @STATUSTEXT=N'Did not finish';    
END


IF @NUMBEROFEXCEPTIONS >0 
    SET @HASEXCEPTIONS=1;

IF @STATUSCODE=0
    SET @STATUS_IS_COMPLETED=1;

IF @STATUSCODE=1
    SET @STATUS_IS_RUNNING=0;

IF @STATUSCODE=2
    SET @STATUS_IS_DID_NOT_FINISH=0;

IF @STATUSCODE=3
    SET @STATUS_IS_RESULTS_CLEARED=0;

return 0;