USP_IDSETREGISTER_DELETEFORSMARTQUERYINSTANCE

Parameters

Parameter Parameter Type Mode Description
@SMARTQUERYINSTANCEID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.[USP_IDSETREGISTER_DELETEFORSMARTQUERYINSTANCE]
(
  @SMARTQUERYINSTANCEID uniqueidentifier,
  @CHANGEAGENTID [uniqueidentifier] = null
)
with execute as caller
as
  begin
    set nocount on

    declare @ID uniqueidentifier;
    declare @RESULT integer;

    select
      @ID = dbo.[IDSETREGISTER].[ID]
      from dbo.[IDSETREGISTER]
      inner join dbo.[IDSETREGISTERSMARTQUERYINSTANCE] on [IDSETREGISTER].[ID] = [IDSETREGISTERSMARTQUERYINSTANCE].[IDSETREGISTERID]
      where [IDSETREGISTERSMARTQUERYINSTANCE].[SMARTQUERYINSTANCEID] = @SMARTQUERYINSTANCEID;

    if @ID is not null
      begin
        if exists(select [ID] from dbo.[ADHOCQUERY] where dbo.[UFN_ADHOCQUERY_IDSETINUSE](@ID, [QUERYDEFINITIONXML]) = 1)
          begin
            raiserror('BBERR_IDSET_INUSEBYADHOCQUERY', 4, 44)
            raiserror('ID set cannot be deleted because it is in use by an ad-hoc query.', 16, 1)
            return 1;
          end

        if exists(select [ID] from dbo.[EXPORTDEFINITION] where dbo.[UFN_EXPORTDEFINITION_IDSETINUSE](@ID, [EXPORTDEFINITIONXML]) = 1)
          begin
            raiserror('BBERR_IDSET_INUSEBYEXPORTDEFINITION', 4, 44)
            raiserror('ID set cannot be deleted because it is in use by an export definition.', 16, 1)
            return 1;
          end
      end

    exec @RESULT= dbo.[USP_IDSETREGISTER_DELETEBYID_WITHCHANGEAGENTID] @ID, @CHANGEAGENTID;

    if @RESULT <> 0
      return @RESULT;

    return 0;
  end