USP_PAGEDEFINITION_CREATEORUPDATE

Used by the platform SQLCLR to register a page definition in the catalog

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT
@NAME nvarchar(60) IN
@DESCRIPTION nvarchar(1000) IN
@RECORDTYPE nvarchar(50) IN
@SPECXML xml IN
@CHANGEAGENTID uniqueidentifier IN
@SPECUINAME nvarchar(60) IN

Definition

Copy


CREATE procedure [dbo].[USP_PAGEDEFINITION_CREATEORUPDATE]
    @ID uniqueidentifier = null output,
    @NAME nvarchar(60),
    @DESCRIPTION nvarchar(1000) = '',
    @RECORDTYPE nvarchar(50) = '',
    @SPECXML xml,
    @CHANGEAGENTID uniqueidentifier = null,
    @SPECUINAME nvarchar(60) = N''
as

set nocount on;

declare @ExistingID uniqueidentifier;
declare @RecTypeID uniqueidentifier;

if @SPECUINAME is null
    set @SPECUINAME = N'';

if @ID is null
    begin
      select @ExistingID = ID from dbo.PAGEDEFINITIONCATALOG where [NAME] = @NAME;
      set @ID = @ExistingID;
    end
else
    select @ExistingID = ID from dbo.PAGEDEFINITIONCATALOG where ID = @ID;

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

set @RecTypeID = null
if len(@RECORDTYPE) > 0 
    --Add record type if it does not exist.        

    exec dbo.USP_RECORDTYPE_GETID_OR_CREATE_FROMNAME @NAME=@RECORDTYPE,@CHANGEAGENTID=@CHANGEAGENTID,@RECORDTYPEID=@RecTypeID output;

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

------------------------------------------------------------------------------------------------------------------------------------------

declare @EXPRESSIONDATAFORMID uniqueidentifier;

set  @EXPRESSIONDATAFORMID =
    @SPECXML.value(
        '
        declare namespace bbspec="bb_appfx_pagedefinition";
        declare namespace c="bb_appfx_commontypes";
        /bbspec:PageDefinitionSpec[1]/@ExpressionDataFormID
        '
        ,'uniqueidentifier');

------------------------------------------------------------------------------------------------------------------------------------------



------------------------------------------------------------------------------------------------------------------------------------------

declare @INSTALLEDPRODUCTLISTXML xml;


with xmlnamespaces(default 'bb_appfx_pagedefinition', 'bb_appfx_commontypes' as c)
select @INSTALLEDPRODUCTLISTXML=@SPECXML.query('/PageDefinitionSpec/c:InstalledProductList');

------------------------------------------------------------------------------------------------------------------------------------------




if @ExistingID is null 

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

        insert into dbo.PAGEDEFINITIONCATALOG (ID, [NAME], DESCRIPTION, CONTEXTRECORDTYPEID, PAGEDEFINITIONSPEC, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, EXPRESSIONDATAFORMID, INSTALLEDPRODUCTLISTXML, SPECUINAME)
            values (@ID, @NAME, @DESCRIPTION, @RecTypeID, @SPECXML, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE, @EXPRESSIONDATAFORMID, @INSTALLEDPRODUCTLISTXML, @SPECUINAME);
    end

else

    update dbo.PAGEDEFINITIONCATALOG 
    set [NAME] = @NAME,
        DESCRIPTION = @DESCRIPTION
        CONTEXTRECORDTYPEID = @RecTypeID,
        PAGEDEFINITIONSPEC = @SPECXML,
        CHANGEDBYID = @CHANGEAGENTID,
        DATECHANGED = @CURRENTDATE,
        EXPRESSIONDATAFORMID = @EXPRESSIONDATAFORMID,
        INSTALLEDPRODUCTLISTXML = @INSTALLEDPRODUCTLISTXML,
        SPECUINAME = @SPECUINAME
    where ID = @ExistingID;

return 0;