UFN_VSECONSTITUENCY_CONSTITUENCYLIST2

Return

Return Type
nvarchar(3000)

Parameters

Parameter Parameter Type Mode Description
@VSECONSTITUENCYID uniqueidentifier IN
@INCLUDEINACTIVE bit IN

Definition

Copy


CREATE function dbo.UFN_VSECONSTITUENCY_CONSTITUENCYLIST2
(
    @VSECONSTITUENCYID uniqueidentifier,
    @INCLUDEINACTIVE bit = 0
)
returns nvarchar(3000)
as begin
    declare @CONSTITUENCY nvarchar(512);
    declare @ISACTIVE bit;
    declare @r nvarchar(3000);
    declare @SEPERATOR nvarchar(2);

    set @r=N'';

    declare CONSTITUENCYCURSOR cursor local fast_forward for
        select
            dbo.UFN_CONSTITUENCY_GETDESCRIPTION(VSECONSTITUENCYMAP.CONSTITUENCYID) as CONSTITUENCY,
            dbo.CONSTITUENCYDEFINITION.ISACTIVE as ISACTIVE
        from
            dbo.VSECONSTITUENCYMAP
            inner join dbo.CONSTITUENCYDEFINITION
                on CONSTITUENCYDEFINITION.ID = VSECONSTITUENCYMAP.CONSTITUENCYID
        where
            VSECONSTITUENCYMAP.VSECONSTITUENCYID = @VSECONSTITUENCYID
            and (@INCLUDEINACTIVE = 1 or CONSTITUENCYDEFINITION.ISACTIVE = 1);

    open CONSTITUENCYCURSOR;
        fetch next from CONSTITUENCYCURSOR into @CONSTITUENCY, @ISACTIVE;
        set @r = '';
        set @SEPERATOR = '';

        while @@FETCH_STATUS = 0
        begin
            set @r = @r + @SEPERATOR + @CONSTITUENCY;
            if @ISACTIVE = 0
            begin
                set @r = @r + ' (inactive)';
            end
            set @SEPERATOR = '; ';
            fetch next from CONSTITUENCYCURSOR into @CONSTITUENCY, @ISACTIVE;
        end

    --When a cursor is used, it should be explicitly closed/deallocated in case of blocking or USP running long

    close CONSTITUENCYCURSOR;
    deallocate CONSTITUENCYCURSOR;

    return @r;
end