USP_IDSETREGISTER_CREATEORUPDATEFORIMPORTSELECTION

Registers a smart query id set.

Parameters

Parameter Parameter Type Mode Description
@IMPORTSELECTIONID uniqueidentifier IN
@USEINQUERYDESIGNER bit IN
@NUMROWS int IN
@CHANGEAGENTID uniqueidentifier IN
@IDSETREGISTERID uniqueidentifier INOUT

Definition

Copy


create procedure dbo.[USP_IDSETREGISTER_CREATEORUPDATEFORIMPORTSELECTION]
(
  @IMPORTSELECTIONID uniqueidentifier,
  @USEINQUERYDESIGNER bit = 0,
  @NUMROWS int = null,
  @CHANGEAGENTID uniqueidentifier = null,
  @IDSETREGISTERID uniqueidentifier = null output
)
as
  set nocount on;

  declare @ID uniqueidentifier;
  declare @CURRENTDATE datetime;

  if @CHANGEAGENTID is null
    exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;

  set @CURRENTDATE = getdate();

  select
    @ID = [IDSETREGISTERID]
  from dbo.[IMPORTSELECTIONPROCESS]
  where [ID] = @IMPORTSELECTIONID;

  if @ID is null
    begin
      --Add new row to register...

      if @IDSETREGISTERID is null
        set @IDSETREGISTERID = newid();

      insert into dbo.[IDSETREGISTER] ([ID], [NAME], [DESCRIPTION], [RECORDTYPEID], [DBOBJECTNAME], [OBJECTTYPE], [STATIC], [NUMROWS], [USEINQUERYDESIGNER], [SITEID], [OWNERID], [ADDEDBYID], [CHANGEDBYID], [DATEADDED], [DATECHANGED])
        select
          @IDSETREGISTERID,
          [NAME] + ' (Imported)',
          [DESCRIPTION],
          [RECORDTYPEID],
          dbo.[UFN_IMPORTSELECTION_MAKETABLENAME](@IMPORTSELECTIONID),
          0,  --view or table

          1,  --static

          @NUMROWS,
          (case when @USEINQUERYDESIGNER is null then [USEINQUERYDESIGNER] else @USEINQUERYDESIGNER end),
          [SITEID],
          [OWNERID],
          @CHANGEAGENTID,
          @CHANGEAGENTID,
          @CURRENTDATE,
          @CURRENTDATE
        from dbo.[IMPORTSELECTIONPROCESS]
        where [ID] = @IMPORTSELECTIONID;

      update dbo.[IMPORTSELECTIONPROCESS] set
        [IDSETREGISTERID] = @IDSETREGISTERID,
        [CHANGEDBYID] = @CHANGEAGENTID,
        [DATECHANGED] = @CURRENTDATE
      where [ID] = @IMPORTSELECTIONID;
    end
  else
    begin
      --Update existing register info...

      set @IDSETREGISTERID = @ID;

      if isnull(@USEINQUERYDESIGNER, 0) = 0 and exists(select [ID] from dbo.[ADHOCQUERY] where dbo.[UFN_ADHOCQUERY_IDSETINUSE](@IDSETREGISTERID, [QUERYDEFINITIONXML]) = 1)
        begin
          raiserror('BBERR_IDSET_INUSEBYADHOCQUERY', 14, 44);
          raiserror('The ''Show this Selection in the Query Designer'' option cannot be set to false because the selection is in use by an ad-hoc query.', 16, 1);
          return 1;
        end

      update dbo.[IDSETREGISTER] set
        [NAME] = [IMPORTSELECTIONPROCESS].[NAME] + ' (Imported)',
        [DESCRIPTION] = [IMPORTSELECTIONPROCESS].[DESCRIPTION],
        [NUMROWS] = (case when @NUMROWS is null then [IDSETREGISTER].[NUMROWS] else @NUMROWS end),
        [USEINQUERYDESIGNER] = (case when @USEINQUERYDESIGNER is null then [IMPORTSELECTIONPROCESS].[USEINQUERYDESIGNER] else @USEINQUERYDESIGNER end),
        [SITEID] = [IMPORTSELECTIONPROCESS].[SITEID],
        [OWNERID] = [IMPORTSELECTIONPROCESS].[OWNERID],
        [CHANGEDBYID] = @CHANGEAGENTID,
        [DATECHANGED] = @CURRENTDATE
      from dbo.[IMPORTSELECTIONPROCESS]
      where [IDSETREGISTER].[ID] = @ID
      and [IMPORTSELECTIONPROCESS].[ID] = @IMPORTSELECTIONID;
    end

  return 0;