USP_FUNCTIONALAREACATALOG_CREATEORUPDATE

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT
@NAME nvarchar(100) IN
@DESCRIPTION nvarchar(max) IN
@FUNCTIONALAREASPECXML xml IN
@SEQUENCE int IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


CREATE procedure [dbo].[USP_FUNCTIONALAREACATALOG_CREATEORUPDATE]
    @ID uniqueidentifier = null output
    @NAME nvarchar(100),
    @DESCRIPTION nvarchar(max) = '',
    @FUNCTIONALAREASPECXML xml, 
    @SEQUENCE integer,
    @CHANGEAGENTID uniqueidentifier = null

as

set nocount on;

declare @ExistingID uniqueidentifier;

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

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

declare @date datetime;
set @date = getDate();

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

declare @INSTALLEDPRODUCTLISTXML xml;

with xmlnamespaces(default 'bb_appfx_functionalarea', 'bb_appfx_commontypes' as c)    
    select INSTALLEDPRODUCTLISTXML = @FUNCTIONALAREASPECXML.query('/FunctionalAreaSpec/c:InstalledProductList');
-----------------------------------------------------------

if @ExistingID is null 

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

        insert into dbo.FUNCTIONALAREACATALOG
        (ID, [NAME], DESCRIPTION, FUNCTIONALAREASPECXML, SEQUENCE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, INSTALLEDPRODUCTLISTXML)
        values 
        (@ID, @NAME, @DESCRIPTION, @FUNCTIONALAREASPECXML, @SEQUENCE, @ChangeAgentID, @ChangeAgentID, @date, @date, @INSTALLEDPRODUCTLISTXML);    
    end

else
    update dbo.FUNCTIONALAREACATALOG
        set [NAME] = @NAME,
            DESCRIPTION = @DESCRIPTION,
            FUNCTIONALAREASPECXML = @FUNCTIONALAREASPECXML,
            SEQUENCE = @SEQUENCE,
            CHANGEDBYID = @ChangeAgentID,
            DATECHANGED = @date,
            INSTALLEDPRODUCTLISTXML = @INSTALLEDPRODUCTLISTXML
        where ID = @ID;

if @@rowcount=0 return 1;

return 0;