USP_IDMAPPER_CREATEORUPDATE_CLR

Parameters

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

Definition

Copy



        create procedure [dbo].[USP_IDMAPPER_CREATEORUPDATE_CLR]
    @ID uniqueidentifier = null output
    @NAME nvarchar(60),
    @DESCRIPTION nvarchar(1000) = '',
    @ASSEMBLYNAME nvarchar(128),
    @CLASSNAME nvarchar(128),
    @STATICPARAMETERDEFINITION xml = null,
    @SPECXML xml,
    @SOURCERECORDTYPE  nvarchar(50)= null,
    @TARGETRECORDTYPE  nvarchar(50)= null,
    @CHANGEAGENTID uniqueidentifier = null
as

--this routine registers a CLR based idMAPPER  in the catalog

set nocount on;

declare @ExistingID uniqueidentifier;


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


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



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


if @ExistingID is null 

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


        insert into dbo.IDMAPPERCATALOG (IMPLEMENTATIONTYPE, ID, [NAME], DESCRIPTION, ASSEMBLYNAME, CLASSNAME, STATICPARAMETERDEFINITION, IDMAPPERSPECXML, SOURCERECORDTYPEID,TARGETRECORDTYPEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
            values (1, @ID, @NAME, @DESCRIPTION, @ASSEMBLYNAME, @CLASSNAME, @STATICPARAMETERDEFINITION, @SPECXML, @SOURCERECORDTYPEID, @TARGETRECORDTYPEID, @CHANGEAGENTID, @CHANGEAGENTID, getdate(), getdate())
    end

else

    update dbo.IDMAPPERCATALOG
    set 
        IMPLEMENTATIONTYPE=1,
        [NAME] = @NAME,
        DESCRIPTION = @DESCRIPTION,
        ASSEMBLYNAME = @ASSEMBLYNAME,
        CLASSNAME = @CLASSNAME,
        STATICPARAMETERDEFINITION = @STATICPARAMETERDEFINITION,
        IDMAPPERSPECXML = @SPECXML,
        SOURCERECORDTYPEID = @SOURCERECORDTYPEID,
        TARGETRECORDTYPEID = @TARGETRECORDTYPEID,
        CHANGEDBYID = @CHANGEAGENTID,
        DATECHANGED = getdate()
    where ID = @ExistingID

if @@error <> 0 return 3;

return 0;