USP_QUERYVIEWCATALOG_CREATEORUPDATEMETADATA

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT
@QUERYVIEWSPEC xml IN
@QUERYVIEWSPECEXTENSION xml IN
@OUTPUTDEFINITIONXML xml IN
@DISPLAYNAME nvarchar(255) IN
@SUBGROUP nvarchar(255) IN
@PRIMARYKEYFIELD nvarchar(128) IN
@PRIMARYKEYTYPENAME nvarchar(128) IN
@ROOT bit IN
@OBJECTNAME nvarchar(128) IN
@OBJECTTYPE tinyint IN
@SECURITYUIFOLDER nvarchar(255) IN
@CHANGEAGENTID uniqueidentifier IN
@RECORDTYPE nvarchar(50) IN
@USEINREPORTMODELGENERATOR bit IN
@MARTKEY nvarchar(255) IN
@ALLOWATTRIBUTEEXTENSION bit IN

Definition

Copy


CREATE procedure [dbo].[USP_QUERYVIEWCATALOG_CREATEORUPDATEMETADATA]
    @ID [uniqueidentifier] = null output,
    @QUERYVIEWSPEC [xml] = null,
    @QUERYVIEWSPECEXTENSION [xml] = null,
    @OUTPUTDEFINITIONXML [xml] = null,
    @DISPLAYNAME [nvarchar](255),
    @SUBGROUP [nvarchar](255),
    @PRIMARYKEYFIELD [nvarchar](128),
    @PRIMARYKEYTYPENAME [nvarchar](128),
    @ROOT [bit],
    @OBJECTNAME [nvarchar](128),
    @OBJECTTYPE [tinyint] = 0,
    @SECURITYUIFOLDER [nvarchar](255),
    @CHANGEAGENTID [uniqueidentifier] = null,
    @RECORDTYPE [nvarchar](50)='',
    @USEINREPORTMODELGENERATOR [bit] = 0,
    @MARTKEY [nvarchar](255) = null,
    @ALLOWATTRIBUTEEXTENSION [bit] = 0

with execute as caller
as
set nocount on

declare @ExistingID uniqueidentifier
declare @TYPEID uniqueidentifier

declare @DBOBJECT nvarchar(128)

if @MARTKEY = ''
    set @MARTKEY = null

if @OBJECTTYPE = 0 
begin
    -- validate view name

    select @DBOBJECT = [TABLE_NAME] from [INFORMATION_SCHEMA].[VIEWS] where [TABLE_NAME] = @OBJECTNAME
    if @DBOBJECT is null and @MARTKEY is null
    begin
        raiserror ('View ''%s'' does not exist', 16, 1, @OBJECTNAME)
        return 1;
    end
end
else
begin
    select @DBOBJECT = [ROUTINE_NAME] from [INFORMATION_SCHEMA].[ROUTINES] where (ROUTINE_SCHEMA = 'dbo') and (ROUTINE_NAME = @OBJECTNAME)
    if @DBOBJECT is null and @MARTKEY = ''
    begin
        raiserror ('Table-valued function ''%s'' does not exist', 16, 1, @OBJECTNAME)
        return 1
    end
end

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

if len(coalesce(@RECORDTYPE,'')) > 0
    --Add record type if it does not exist.        

    exec dbo.[USP_RECORDTYPE_GETID_OR_CREATE_FROMNAME] @NAME=@RECORDTYPE,@CHANGEAGENTID=@CHANGEAGENTID,@RECORDTYPEID=@TYPEID output;


if @ID is null
    begin
      select @ExistingID = [ID] from dbo.[QUERYVIEWCATALOG] where [OBJECTNAME] = @OBJECTNAME and [OBJECTTYPE] = 0
      set @ID = @ExistingID
    end
else
    select @ExistingID = [ID] from dbo.[QUERYVIEWCATALOG] where [ID] = @ID





declare @EnforceRACSecurity bit;



--set @EnforceRACSecurity=0;

set @EnforceRACSecurity=        
 coalesce(
                @QUERYVIEWSPEC.value(
                                        '
                                        declare namespace bbfa="bb_appfx_queryview";
                                        /bbfa:QueryViewSpec[1]/@EnforceRecordAccessSecurity
                                        '
                                        ,'bit')
                ,0);



declare @description nvarchar(max);

set @description=
coalesce(
                @QUERYVIEWSPEC.value(
                                        '
                                        declare namespace bbfa="bb_appfx_queryview";
                                        /bbfa:QueryViewSpec[1]/@Description
                                        '
                                        ,'nvarchar(max)')
                ,'')


declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()

if @ExistingID is null
    begin
        if @ID is null set @ID = NewID()

        insert into dbo.[QUERYVIEWCATALOG] ([ID], [OBJECTNAME], [OBJECTTYPE], [RECORDTYPEID], [DISPLAYNAME], [ROOTOBJECT], [SUBGROUP], [PRIMARYKEYFIELD], [PRIMARYKEYTYPENAME], [OUTPUTDEFINITIONXML], [QUERYVIEWSPEC], [QUERYVIEWSPECEXTENSION], [SECURITYUIFOLDER], [ADDEDBYID], [CHANGEDBYID], [ENFORCERECORDACCESSSECURITY],[DESCRIPTION], [USEINREPORTMODELGENERATOR], [MARTKEY], [ALLOWATTRIBUTEEXTENSION], [DATEADDED], [DATECHANGED]) 
        values (@ID, @OBJECTNAME, @OBJECTTYPE, @TYPEID, @DISPLAYNAME, @ROOT, @SUBGROUP, @PRIMARYKEYFIELD, @PRIMARYKEYTYPENAME, @OUTPUTDEFINITIONXML, @QUERYVIEWSPEC, @QUERYVIEWSPECEXTENSION, @SECURITYUIFOLDER, @CHANGEAGENTID, @CHANGEAGENTID,@EnforceRACSecurity,@description, @USEINREPORTMODELGENERATOR, @MARTKEY, @ALLOWATTRIBUTEEXTENSION, @CURRENTDATE, @CURRENTDATE)
    end
else
    update dbo.[QUERYVIEWCATALOG] 
  set [OBJECTNAME] = @OBJECTNAME,
          [QUERYVIEWSPEC] = @QUERYVIEWSPEC,
          [QUERYVIEWSPECEXTENSION] = @QUERYVIEWSPECEXTENSION,
          [OUTPUTDEFINITIONXML] = @OUTPUTDEFINITIONXML,
          [RECORDTYPEID] = @TYPEID
          [DISPLAYNAME] = @DISPLAYNAME,
          [ROOTOBJECT] = @ROOT,
          [SUBGROUP] = @SUBGROUP,
          [PRIMARYKEYFIELD] = @PRIMARYKEYFIELD,
          [PRIMARYKEYTYPENAME] = @PRIMARYKEYTYPENAME,
          [SECURITYUIFOLDER] = @SECURITYUIFOLDER,
          [CHANGEDBYID] = @CHANGEAGENTID,
          [ENFORCERECORDACCESSSECURITY] = @EnforceRACSecurity,
          [DESCRIPTION] = @description,
          [USEINREPORTMODELGENERATOR] = @USEINREPORTMODELGENERATOR,
          [MARTKEY] = @MARTKEY,
          [ALLOWATTRIBUTEEXTENSION] = @ALLOWATTRIBUTEEXTENSION,
          [DATECHANGED] = @CURRENTDATE,
          [OBJECTTYPE] = @OBJECTTYPE
    where ID = @ExistingID;