USP_EXPORTDEFINITION_DELETE

Executes the "Export Definition: Delete" record operation.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN Input parameter indicating the ID of the record being deleted.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the delete.

Definition

Copy


CREATE procedure dbo.USP_EXPORTDEFINITION_DELETE
(
  @ID uniqueidentifier,
  @CHANGEAGENTID uniqueidentifier
)
as begin
  -- check deletion rules, if any

  declare @VIEWDATAFORMTEMPLATEID uniqueidentifier;
  declare @VIEWDATAFORMINSTANCEID uniqueidentifier;
  declare @LOADSPECLOGID uniqueidentifier;
  declare @MKTEXPORTDEFINITIONID uniqueidentifier;
  declare @SQL nvarchar(max);

  select @VIEWDATAFORMTEMPLATEID = [VIEWDATAFORMTEMPLATEID]
  from dbo.[EXPORTDEFINITION]
  where [ID] = @ID;

  if exists (select top 1 1 from dbo.sysobjects where name = 'MKTEXPORTDEFINITION') -- may not exist, as in a BBPay build

    begin
      -- EXPORTDEFINITIONID is being added to MKTEXPORTDEFINITION in a Galileo revision, so...

      set @SQL = 'select @MKTEXPORTDEFINITIONID = [ID] from dbo.[MKTEXPORTDEFINITION] where [EXPORTDEFINITIONID] = @ID';

      exec sp_executesql @SQL, N'@MKTEXPORTDEFINITIONID uniqueidentifier output, @ID uniqueidentifier', @MKTEXPORTDEFINITIONID = @MKTEXPORTDEFINITIONID output, @ID = @ID;
    end

  if not @MKTEXPORTDEFINITIONID is null
    begin
      if exists (select top 1 1 from dbo.[MKTEXPORTDEFINITION] where [ID] = @MKTEXPORTDEFINITIONID and [NETCOMMUNITYDATASOURCEID] > 0)
        if exists (select top 1 1 from dbo.[EmailTemplate] where [Deleted] = 0 and [DataSourceID] = (select [NETCOMMUNITYDATASOURCEID] from dbo.[MKTEXPORTDEFINITION] where [ID] = @MKTEXPORTDEFINITIONID))
          begin
            raiserror ('ERR_EXPORTDEFINITION_INUSEBYNETCOMMUNITYEMAILTEMPLATE', 13, 1);
            return 1;
          end

      exec dbo.[USP_MKTEXPORTDEFINITION_DELETE] @MKTEXPORTDEFINITIONID, @CHANGEAGENTID;
    end

  -- use the system generated delete routine to allow proper recording of the deleting agent

  exec USP_EXPORTDEFINITION_DELETEBYID_WITHCHANGEAGENTID @ID, @CHANGEAGENTID

  if @VIEWDATAFORMTEMPLATEID is not null
    begin
      select @VIEWDATAFORMINSTANCEID = [ID]
      from dbo.[DATAFORMINSTANCECATALOG]
      where [DATAFORMTEMPLATECATALOGID] = @VIEWDATAFORMTEMPLATEID;

      exec dbo.[USP_DATAFORMINSTANCECATALOG_DELETEBYID_WITHCHANGEAGENTID] @VIEWDATAFORMINSTANCEID, @CHANGEAGENTID;
      exec dbo.[USP_DATAFORMTEMPLATECATALOG_DELETEBYID_WITHCHANGEAGENTID] @VIEWDATAFORMTEMPLATEID, @CHANGEAGENTID;

      declare LOADSPECLOGCURSOR cursor local fast_forward for
        select [ID]
        from dbo.[LOADSPECLOG]
        where [SPECID] = @VIEWDATAFORMTEMPLATEID;

      open LOADSPECLOGCURSOR;
      fetch next from LOADSPECLOGCURSOR into @LOADSPECLOGID;

      while (@@FETCH_STATUS = 0)
        begin
          exec dbo.[USP_LOADSPECLOG_DELETEBYID_WITHCHANGEAGENTID] @LOADSPECLOGID, @CHANGEAGENTID;
          fetch next from LOADSPECLOGCURSOR into @LOADSPECLOGID;
        end

      close LOADSPECLOGCURSOR;
      deallocate LOADSPECLOGCURSOR;
    end

  return 0;
end