USP_SELECTIONMERGE_CREATEORUPDATE
Create or update a selection merge.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | |
@RECORDTYPEID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@NAME | nvarchar(300) | IN | |
@DESCRIPTION | nvarchar(1024) | IN | |
@SELECTIONID1 | uniqueidentifier | IN | |
@SELECTIONID2 | uniqueidentifier | IN | |
@MERGETYPECODE | tinyint | IN | |
@IDSETREGISTERID | uniqueidentifier | IN | |
@USEINQUERYDESIGNER | bit | IN |
Definition
Copy
CREATE procedure dbo.[USP_SELECTIONMERGE_CREATEORUPDATE]
(
@ID uniqueidentifier = null output,
@RECORDTYPEID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@NAME nvarchar(300),
@DESCRIPTION nvarchar(1024) = '',
@SELECTIONID1 uniqueidentifier,
@SELECTIONID2 uniqueidentifier,
@MERGETYPECODE tinyint = 0,
@IDSETREGISTERID uniqueidentifier = null,
@USEINQUERYDESIGNER bit = 0
)
as
set nocount on;
declare @FUNCTIONNAME nvarchar(128);
declare @MERGESQL nvarchar(max);
declare @SQL nvarchar(max);
declare @CURRENTDATE datetime;
begin try
if @ID is null
set @ID = newid();
if @CHANGEAGENTID is null
exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;
set @CURRENTDATE = getdate();
set @MERGESQL = dbo.[UFN_SELECTIONMERGE_BUILDIDSELECTSQL](@SELECTIONID1, @SELECTIONID2, @MERGETYPECODE);
if @MERGESQL is null
raiserror('Invalid merge type, or one of the selections does not exist in the database.', 13, 1);
--Build the sql for the table-value function...
set @FUNCTIONNAME = 'UFN_SELECTIONMERGE_' + replace(convert(nvarchar(36), @ID), '-', '_');
if exists(select * from INFORMATION_SCHEMA.ROUTINES where [ROUTINE_SCHEMA] = 'dbo' and [ROUTINE_NAME] = @FUNCTIONNAME and [ROUTINE_TYPE] = 'FUNCTION')
set @SQL = 'alter';
else
set @SQL = 'create';
set @SQL += ' function dbo.[' + @FUNCTIONNAME + ']()' + char(13) +
'returns table' + char(13) +
'as' + char(13) +
'return (' + char(13) +
@MERGESQL +
');';
exec (@SQL);
--Create the IDSet record information...
exec dbo.[USP_IDSETREGISTER_CREATEORUPDATE] @IDSETREGISTERID output, @NAME, @DESCRIPTION, @FUNCTIONNAME, 1, @RECORDTYPEID, @USEINQUERYDESIGNER, 0, null, @CHANGEAGENTID, null, null;
if exists(select * from dbo.[IDSETREGISTERMERGE] where [ID] = @ID)
update dbo.[IDSETREGISTERMERGE] set
[NAME] = @NAME,
[IDSETREGISTERID] = @IDSETREGISTERID,
[SELECTION1ID] = @SELECTIONID1,
[SELECTION2ID] = @SELECTIONID2,
[MERGETYPECODE] = @MERGETYPECODE,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
where [ID] = @ID;
else
insert into dbo.[IDSETREGISTERMERGE] (
[ID],
[NAME],
[IDSETREGISTERID],
[SELECTION1ID],
[SELECTION2ID],
[MERGETYPECODE],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
) values (
@ID,
@NAME,
@IDSETREGISTERID,
@SELECTIONID1,
@SELECTIONID2,
@MERGETYPECODE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
end try
begin catch
exec dbo.[USP_RAISE_ERROR];
return 1;
end catch
return 0;