USP_DATAFORMTEMPLATE_ADD_PDCOMPOSITESEGMENT

The save procedure used by the add dataform template "Composite Segment Add Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@NAME nvarchar(25) IN Name
@TABLENAME xml IN Calculate using

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_PDCOMPOSITESEGMENT
(
    @ID uniqueidentifier = null output,
    @CHANGEAGENTID uniqueidentifier = null,
    @NAME nvarchar(25) = null,
    @TABLENAME  xml = null
)
as

set nocount on;

if @ID is null
    set @ID = newid()

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

declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()

declare @TABLECOUNT integer
select @TABLECOUNT = count(*) from dbo.UFN_PDCOMPOSITESEGMENTTABLELIST_FROMITEMLISTXML(@TABLENAME)


-- handle inserting the data


    if @TABLECOUNT < 2
        raiserror('ERR_PDCOMPOSITESEGMENT_UNDERTWO',13,1);
    if @TABLECOUNT > 4
    raiserror('ERR_PDCOMPOSITESEGMENT_OVERFOUR',13,1);
    else


    begin
        begin tran
            insert into dbo.PDCOMPOSITESEGMENT
                (ID, NAME,  ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
            values
                (@ID, @NAME, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)

            insert into dbo.PDCOMPOSITESEGMENTTABLELIST
                (PDCOMPOSITESEGMENTID, PDACCOUNTTABLESAVAILABLEFORSEGMENTID, SEQUENCE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
            select @ID, TABLENAMEID, row_number() over(order by FRIENDLYTABLENAME), @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE from dbo.UFN_PDCOMPOSITESEGMENTTABLELIST_FROMITEMLISTXML(@TABLENAME) as a
            join dbo.PDACCOUNTTABLESAVAILABLEFORSEGMENT as b on a.TABLENAMEID = b.ID
        commit
    end
return 0