USP_IDMAPPER_CREATEORUPDATE_SP

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT
@NAME nvarchar(60) IN
@DESCRIPTION nvarchar(1000) IN
@PROCEDURE nvarchar(128) IN
@SPECXML xml IN
@SOURCERECORDTYPE nvarchar(50) IN
@TARGETRECORDTYPE nvarchar(50) IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy

        CREATE procedure [dbo].[USP_IDMAPPER_CREATEORUPDATE_SP]
    @ID uniqueidentifier = null output,
    @NAME nvarchar(60),
    @DESCRIPTION nvarchar(1000) = '',
    @PROCEDURE nvarchar(128),
    @SPECXML xml,
    @SOURCERECORDTYPE  nvarchar(50)= null,
    @TARGETRECORDTYPE  nvarchar(50)= null,

    @CHANGEAGENTID uniqueidentifier = null
as

set nocount on

declare @ExistingID uniqueidentifier
declare @OBJID int

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

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

-- make sure this is a valid procedure
select @OBJID = id from dbo.sysobjects where type in ('P', 'PC') and name = @PROCEDURE
if @OBJID is null
    begin
        raiserror ('Procedure ''%s'' does not exist or you do not have security access.', 16, 1, @PROCEDURE)
        return 1;
    end



declare @SOURCERECORDTYPEID uniqueidentifier;

if coalesce(@SOURCERECORDTYPE,'') <> ''
begin
exec dbo.USP_RECORDTYPE_GETID_OR_CREATE_FROMNAME 
                @NAME=@SOURCERECORDTYPE,
                @CHANGEAGENTID=@CHANGEAGENTID,
                @RECORDTYPEID=@SOURCERECORDTYPEID output;

end


declare @TARGETRECORDTYPEID uniqueidentifier;

if coalesce(@TARGETRECORDTYPE,'') <> ''
begin
exec dbo.USP_RECORDTYPE_GETID_OR_CREATE_FROMNAME 
                @NAME=@TARGETRECORDTYPE,
                @CHANGEAGENTID=@CHANGEAGENTID,
                @RECORDTYPEID=@TARGETRECORDTYPEID output;

end



declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()

if @ExistingID is null 

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

        insert into dbo.IDMAPPERCATALOG (IMPLEMENTATIONTYPE,ID, [NAME], DESCRIPTION, PROCEDURENAME,  IDMAPPERSPECXML, SOURCERECORDTYPEID,TARGETRECORDTYPEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
            values (0,@ID, @NAME, @DESCRIPTION, @PROCEDURE, @SPECXML, @SOURCERECORDTYPEID, @TARGETRECORDTYPEID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)
    end

else

    update dbo.IDMAPPERCATALOG 
    set [NAME] = @NAME,
        IMPLEMENTATIONTYPE=0,
        DESCRIPTION = @DESCRIPTION
        PROCEDURENAME = @PROCEDURE,
        STATICPARAMETERDEFINITION = null,
        IDMAPPERSPECXML = @SPECXML,
        SOURCERECORDTYPEID=@SOURCERECORDTYPEID,
        TARGETRECORDTYPEID=@TARGETRECORDTYPEID,
        CHANGEDBYID = @CHANGEAGENTID,
        DATECHANGED = @CURRENTDATE
    where ID = @ExistingID

return 0;