USP_MKTSMARTFIELD_ADDTOSYSTEMROLEPERM_QUERYVIEW

Grants permissions to roles for a specified smart field.

Parameters

Parameter Parameter Type Mode Description
@OBJECTNAME nvarchar(128) IN
@RECORDSOURCEID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.[USP_MKTSMARTFIELD_ADDTOSYSTEMROLEPERM_QUERYVIEW]
(
  @OBJECTNAME nvarchar(128),
  @RECORDSOURCEID uniqueidentifier,
  @CHANGEAGENTID uniqueidentifier = null
)
as
  set nocount on;

  declare @QUERYVIEWCATALOGID uniqueidentifier;
  declare @GRANTORDENY bit;
  declare @SYSTEMROLEID uniqueidentifier;

  begin try
    if @CHANGEAGENTID is null
      exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

    select
      @QUERYVIEWCATALOGID = [ID]
    from
      dbo.[QUERYVIEWCATALOG]
    where
      [OBJECTNAME] = @OBJECTNAME;

    declare roles_cursor cursor local fast_forward for
    select distinct [SYSTEMROLEID], [GRANTORDENY] from dbo.[SYSTEMROLEPERM_QUERYVIEW]
    where [QUERYVIEWCATALOGID] =  @RECORDSOURCEID;

    open roles_cursor;
    fetch next from roles_cursor into @SYSTEMROLEID, @GRANTORDENY;

    while @@FETCH_STATUS = 0
    begin

      if not exists(select 1 from [SYSTEMROLEPERM_QUERYVIEW] inner join [SYSTEMROLE] on [SYSTEMROLEPERM_QUERYVIEW].[SYSTEMROLEID] = [SYSTEMROLE].[ID] where [SYSTEMROLEID] = @SYSTEMROLEID and [QUERYVIEWCATALOGID] = @QUERYVIEWCATALOGID)
      begin
        insert into [SYSTEMROLEPERM_QUERYVIEW] (
          [SYSTEMROLEID],
          [QUERYVIEWCATALOGID],
          [GRANTORDENY],
          [ADDEDBYID],
          [CHANGEDBYID]
        ) values (
          @SYSTEMROLEID,
          @QUERYVIEWCATALOGID,
          @GRANTORDENY,
          @CHANGEAGENTID,
          @CHANGEAGENTID
        )
      end
      else
      begin
        update [SYSTEMROLEPERM_QUERYVIEW]
        set [GRANTORDENY] = @GRANTORDENY
        where [SYSTEMROLEID] = @SYSTEMROLEID and [QUERYVIEWCATALOGID] = @QUERYVIEWCATALOGID;
      end

      fetch next from roles_cursor into @SYSTEMROLEID, @GRANTORDENY;
    end
    close roles_cursor;
    deallocate roles_cursor;
  end try
  begin catch
    exec dbo.USP_RAISE_ERROR;
    return 1;
  end catch

  return 0;