USP_DATAFORMTEMPLATE_EDIT_SYSTEMROLE_SMARTFIELDINSTANCES

The save procedure used by the edit dataform template "System Role Smart Field Instance Edit Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@SMARTFIELDINSTANCELIST xml IN Smart field instances

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_SYSTEMROLE_SMARTFIELDINSTANCES
    @ID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null,
    @SMARTFIELDINSTANCELIST xml
as

set nocount on;

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

declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();

begin try

    update dbo.SYSTEMROLE set CHANGEDBYID = @CHANGEAGENTID
        DATECHANGED = @CURRENTDATE
    where ID = @ID;

    set @SMARTFIELDINSTANCELIST = (
        select XML.ID, QUERYVIEWCATALOG.ID QUERYVIEWCATALOGID, XML.SMARTFIELDID, XML.GRANTORDENY
        from dbo.UFN_SYSTEMROLE_GETSMARTFIELDINSTANCELIST_FROMITEMLISTXML(@SMARTFIELDINSTANCELIST) XML
            inner join SMARTFIELD on SMARTFIELD.ID=XML.SMARTFIELDID
            inner join QUERYVIEWCATALOG on upper(QUERYVIEWCATALOG.OBJECTNAME) = dbo.UFN_SMARTFIELD_GETQUERYVIEWOBJECTNAME(SMARTFIELD.ID)
        for xml raw('ITEM'),type,elements,root('SMARTFIELDINSTANCELIST'),BINARY BASE64
    );

    exec dbo.USP_SYSTEMROLE_GETSMARTFIELDINSTANCELIST_UPDATEFROMXML @ID, @SMARTFIELDINSTANCELIST, @CHANGEAGENTID;

  if exists (select 1 from dbo.[OLAPDATASOURCESMARTFIELD])
    exec dbo.[USP_OLAP_COPYSMARTFIELDQUERYVIEWPERMISSIONS] @ID;

    return 0;

end try
begin catch
    exec dbo.USP_RAISE_ERROR;
    return 1;
end catch;