USP_IMPORTSELECTIONPROCESS_GETOPTIONS

Retrieves the options for an import selection process parameter set.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.[USP_IMPORTSELECTIONPROCESS_GETOPTIONS]
(
  @ID uniqueidentifier
)
as
  set nocount on;

  declare @BASETABLENAME nvarchar(128);
  declare @BASETABLEPRIMARYKEY nvarchar(128);

  --Check if the record type matches one of the RE7 query views (Constituent, Gift, or Appeal).  Because the RE7

  --data mart tables are not real TableSpec tables and record types (ie - we use synonyms to access the tables in

  --the RE7 schema), we need to hard-code the information here.

  select
    @BASETABLENAME = (case [QUERYVIEWCATALOG].[ID]
                        when '09A6D736-2ACB-42FF-87DB-F4F92A2025E1' then 'RE7_CONSTITUENT'
                        when 'EB67DCAC-60B8-4D81-BA86-C2C08C96CC1D' then 'RE7_REVENUESPLIT'
                        when '33739C2C-393F-4DAE-B61E-F9B0B3733807' then 'RE7_APPEAL'
                      end),
    @BASETABLEPRIMARYKEY = 'LOCALID'
  from dbo.[IMPORTSELECTIONPROCESS]
  inner join dbo.[QUERYVIEWCATALOG] on [QUERYVIEWCATALOG].[RECORDTYPEID] = [IMPORTSELECTIONPROCESS].[RECORDTYPEID]
  where [IMPORTSELECTIONPROCESS].[ID] = @ID
  and [QUERYVIEWCATALOG].[ID] in ('09A6D736-2ACB-42FF-87DB-F4F92A2025E1', 'EB67DCAC-60B8-4D81-BA86-C2C08C96CC1D', '33739C2C-393F-4DAE-B61E-F9B0B3733807');

  -- another special case: the 'Audit table' record type really means TABLECATALOG

  if @BASETABLENAME is null
    select
      @BASETABLENAME = 'TABLECATALOG',
      @BASETABLEPRIMARYKEY = 'ID'
    from dbo.[IMPORTSELECTIONPROCESS]
    inner join dbo.[RECORDTYPE] on [RECORDTYPE].[ID] = [IMPORTSELECTIONPROCESS].[RECORDTYPEID]
    where [IMPORTSELECTIONPROCESS].[ID] = @ID
    and [RECORDTYPE].[NAME] = 'Audit table';

  if @BASETABLENAME is null
    begin
      select
        @BASETABLENAME = [RECORDTYPE].[BASETABLENAME]
      from dbo.[IMPORTSELECTIONPROCESS]
      inner join dbo.[RECORDTYPE] on [RECORDTYPE].[ID] = [IMPORTSELECTIONPROCESS].[RECORDTYPEID]
      where [IMPORTSELECTIONPROCESS].[ID] = @ID;

      set @BASETABLEPRIMARYKEY = (select [CCU].[COLUMN_NAME]
                                  from INFORMATION_SCHEMA.TABLE_CONSTRAINTS as [TC]
                                  inner join INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE as [CCU] on [CCU].[TABLE_SCHEMA] = [TC].[TABLE_SCHEMA] and [CCU].[TABLE_NAME] = [TC].[TABLE_NAME] and [CCU].[CONSTRAINT_NAME] = [TC].[CONSTRAINT_NAME]
                                  where [TC].[TABLE_SCHEMA] = 'dbo'
                                  and [TC].[TABLE_NAME] = @BASETABLENAME
                                  and [TC].[CONSTRAINT_TYPE] = 'PRIMARY KEY');

      --The revenue table has been changed to be an updatable view with the FTM. So the primary key 

      --information will not be found in the table schema but it we need to return the ID column to maintain compatibility.

      if @BASETABLENAME = 'REVENUE' and @BASETABLEPRIMARYKEY is null
        set @BASETABLEPRIMARYKEY = 'ID';
    end

  select
    [IMPORTSELECTIONPROCESS].[USEINQUERYDESIGNER],
    [IMPORTSELECTIONPROCESS].[IDFIELD],
    [IMPORTSELECTIONPROCESS].[IDTYPECODE],
    [IMPORTSELECTIONPROCESS].[ALTERNATELOOKUPIDTYPECODEID],
    [IMPORTSELECTIONPROCESS].[STATUSCODE],
    [IMPORTSELECTIONPROCESS].[IDSETREGISTERID],
    dbo.[UFN_IMPORTSELECTION_MAKETABLENAME]([IMPORTSELECTIONPROCESS].[ID]) as [IDSETTABLENAME],
    [RECORDTYPE].[NAME] as [RECORDTYPE],
    @BASETABLENAME as [BASETABLENAME],
    @BASETABLEPRIMARYKEY as [BASETABLEPRIMARYKEY],
    (select top 1 [PRIMARYKEYTYPENAME]
     from dbo.[QUERYVIEWCATALOG]
     where [QUERYVIEWCATALOG].[RECORDTYPEID] = [IMPORTSELECTIONPROCESS].[RECORDTYPEID]
     and [ROOTOBJECT] = 1
     and [PRIMARYKEYTYPENAME] is not null
     and [PRIMARYKEYTYPENAME] <> '') as [BASETABLEPRIMARYKEYTYPENAME],
    [IMPORTSELECTIONPROCESS].[NAME]
  from dbo.[IMPORTSELECTIONPROCESS]
  inner join dbo.[RECORDTYPE] on [RECORDTYPE].[ID] = [IMPORTSELECTIONPROCESS].[RECORDTYPEID]
  where [IMPORTSELECTIONPROCESS].[ID] = @ID;

  return 0;