USP_BBNC_GETSELECTIONIDLIST

Retrieves a list of ids for all selections matching the criteria specified for BBNC.

Parameters

Parameter Parameter Type Mode Description
@NAME nvarchar(300) IN
@RECORDTYPE nvarchar(50) IN
@FORMAT tinyint IN
@EXACTMATCH bit IN
@EXCLUDEIDS nvarchar(max) IN
@MAXRECS int IN

Definition

Copy


            create procedure [dbo].[USP_BBNC_GETSELECTIONIDLIST](@NAME nvarchar(300) = '', @RECORDTYPE nvarchar(50) = '', @FORMAT tinyint = 0, @EXACTMATCH bit = 0, @EXCLUDEIDS nvarchar(max) = '', @MAXRECS int = 0)
            with execute as owner
            as

            begin
                declare @SQL nvarchar(max);
                declare @PARAMS nvarchar(max);
                declare @HASWHERE bit;

                set @HASWHERE = 0;

                set @SQL = N'select ';
                if coalesce(@MAXRECS,0) > 0
                    set @SQL = @SQL + 'top ' + convert(nvarchar, @MAXRECS + 1) + N' ';

                set @SQL = @SQL + N'BBNCIDSETIDMAP.ID ';
                set @SQL = @SQL + N'from dbo.IDSETREGISTER ';
                set @SQL = @SQL + N'inner join dbo.BBNCIDSETIDMAP on IDSETREGISTER.ID = BBNCIDSETIDMAP.IDSETREGISTERID ';
                set @SQL = @SQL + N'inner join dbo.RECORDTYPE on IDSETREGISTER.RECORDTYPEID = RECORDTYPE.ID ';
                set @PARAMS = N'';

                if len(coalesce(@NAME,'')) > 0
                    begin
                        if @EXACTMATCH = 1
                            set @SQL = @SQL + N'where IDSETREGISTER.NAME = @NAME ';
                        else
                            begin
                                set @NAME = @NAME + N'%';
                                set @SQL = @SQL + N'where IDSETREGISTER.NAME like @NAME ';
                            end

                        set @HASWHERE = 1;
                        set @PARAMS = N'@NAME nvarchar(300)';

                    end

                if len(coalesce(@RECORDTYPE,'')) > 0
                    begin
                        if @HASWHERE = 0
                            set @SQL = @SQL + N'where '
                        else
                            set @SQL = @SQL + N'and '

                        set @SQL = @SQL + N'RECORDTYPE.NAME = @RECORDTYPE ';

                        set @HASWHERE = 1;

                        if len(@PARAMS) > 0
                            set @PARAMS = @PARAMS + N', @RECORDTYPE nvarchar(50)'
                        else
                            set @PARAMS = N'@RECORDTYPE nvarchar(50)';

                    end

                if coalesce(@FORMAT,0) = 1
                    -- Dynamic

                    begin
                        if @HASWHERE = 0
                            set @SQL = @SQL + N'where '
                        else
                            set @SQL = @SQL + N'and '

                        set @SQL = @SQL + N'IDSETREGISTER.STATIC = 0 '

                        set @HASWHERE = 1;
                    end

                if coalesce(@FORMAT,0) = 2
                    -- Static

                    begin
                        if @HASWHERE = 0
                            set @SQL = @SQL + N'where '
                        else
                            set @SQL = @SQL + N'and '

                        set @SQL = @SQL + N'IDSETREGISTER.STATIC = 1 '

                        set @HASWHERE = 1;
                    end

                if len(coalesce(@EXCLUDEIDS,'')) > 0
                    begin
                        if @HASWHERE = 0
                            set @SQL = @SQL + N'where '
                        else
                            set @SQL = @SQL + N'and '

                        set @SQL = @SQL + N'not BBNCIDSETIDMAP.ID in (' + @EXCLUDEIDS + ') ';
                    end

                set @SQL = @SQL + N'order by IDSETREGISTER.NAME'

                if len(coalesce(@NAME,'')) > 0 and len(coalesce(@RECORDTYPE,'')) > 0
                    exec sp_executesql @SQL, @PARAMS, @NAME = @NAME, @RECORDTYPE = @RECORDTYPE;
                else
                    if len(coalesce(@NAME,'')) > 0
                        exec sp_executesql @SQL, @PARAMS, @NAME = @NAME;
                    else
                        if len(coalesce(@RECORDTYPE,'')) > 0
                            exec sp_executesql @SQL, @PARAMS, @RECORDTYPE = @RECORDTYPE;
                        else
                            exec sp_executesql @SQL;
            end