USP_DATAFORMTEMPLATE_EDIT_PDCOMPOSITESEGMENT

The save procedure used by the edit dataform template "Composite Segment 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.
@NAME nvarchar(25) IN Name
@TABLENAME xml IN Calculate using

Definition

Copy

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

    set nocount on;

    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)

    begin try
    --begin tran
    -- handle updating the data

    if @TABLECOUNT < 2
        raiserror('ERR_PDCOMPOSITESEGMENT_UNDERTWO',13,1);
    if @TABLECOUNT > 4
        raiserror('ERR_PDCOMPOSITESEGMENT_OVERFOUR',13,1);
    else
        begin
            begin tran
                -- handle updating the data
                    update dbo.PDCOMPOSITESEGMENT set
                        NAME = @NAME,
                        CHANGEDBYID = @CHANGEAGENTID,
                        DATECHANGED = @CURRENTDATE
                    where ID = @ID


                  declare @CONTEXTCACHE varbinary(128) = CONTEXT_INFO()
                  set CONTEXT_INFO @CHANGEAGENTID

                  delete a from dbo.PDCOMPOSITESEGMENTTABLELIST a
                  where a.PDCOMPOSITESEGMENTID = @ID   

                  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


                  if @CONTEXTCACHE is not null
                    set CONTEXT_INFO @CONTEXTCACHE        
            commit
        end
    end try
    begin catch
        exec dbo.USP_RAISE_ERROR
        return 1
    end catch

return 0;