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;