USP_QUERYVIEW_CLONERELATIONSHIPS
Adds or updates cloned relationships.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SOURCEOBJECT | nvarchar(128) | IN | |
@DESTOBJECT | nvarchar(128) | IN | |
@ADDEDBYQUERYVIEWID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@MARTKEY | nvarchar(255) | IN |
Definition
Copy
CREATE procedure dbo.[USP_QUERYVIEW_CLONERELATIONSHIPS]
(
@SOURCEOBJECT nvarchar(128),
@DESTOBJECT nvarchar(128),
@ADDEDBYQUERYVIEWID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@MARTKEY nvarchar(255) = null
)
as
set nocount on;
declare @DESTOBJECTID as uniqueidentifier;
declare @RELATEDQUERYVIEWID uniqueidentifier;
declare @PATHALIAS nvarchar(128);
declare @ROOTCOLUMN nvarchar(128);
declare @RELATEDCOLUMN nvarchar(128);
declare @SEQUENCE int;
declare @JOINTYPE tinyint;
declare @JOINPARAMETERS nvarchar(255);
declare @CARDINALITYTYPE tinyint;
declare @DISPLAYALIAS nvarchar(100);
declare @DISPLAYALIASRESOURCEKEY nvarchar(100);
declare @RESOURCEFILEASSEMBLYNAME nvarchar(max);
declare @RESOURCEFILECLASSNAME nvarchar(max);
declare @OBSOLETE bit;
declare @USEFOREXPORTDEFINITIONSONLY bit;
declare @CURRENTDATE datetime = getdate();
begin try
-- default changeagent ID if none is passed in
if @CHANGEAGENTID is null
exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;
select
@DESTOBJECTID = [ID]
from dbo.[QUERYVIEWCATALOG]
where [OBJECTNAME] = @DESTOBJECT;
declare RELATIONSHIPSCURSOR cursor local fast_forward for
select
[QUERYVIEWRELATIONSHIP].[RELATEDQUERYVIEWID],
[QUERYVIEWRELATIONSHIP].[PATHALIAS],
[QUERYVIEWRELATIONSHIP].[ROOTCOLUMN],
[QUERYVIEWRELATIONSHIP].[RELATEDCOLUMN],
[QUERYVIEWRELATIONSHIP].[SEQUENCE],
[QUERYVIEWRELATIONSHIP].[JOINTYPE],
[QUERYVIEWRELATIONSHIP].[JOINPARAMETERS],
[QUERYVIEWRELATIONSHIP].[CARDINALITYTYPE],
[QUERYVIEWRELATIONSHIP].[DISPLAYALIAS],
[QUERYVIEWRELATIONSHIP].[DISPLAYALIASRESOURCEKEY],
[QUERYVIEWRELATIONSHIP].[RESOURCEFILEASSEMBLYNAME],
[QUERYVIEWRELATIONSHIP].[RESOURCEFILECLASSNAME],
[QUERYVIEWRELATIONSHIP].[OBSOLETE],
[QUERYVIEWRELATIONSHIP].[USEFOREXPORTDEFINITIONSONLY]
from dbo.[QUERYVIEWRELATIONSHIP]
inner join dbo.[QUERYVIEWCATALOG] on [QUERYVIEWRELATIONSHIP].[ROOTQUERYVIEWID] = [QUERYVIEWCATALOG].[ID]
where [OBJECTNAME] = @SOURCEOBJECT
and (
exists(select * from INFORMATION_SCHEMA.COLUMNS where [COLUMN_NAME] = [QUERYVIEWRELATIONSHIP].[ROOTCOLUMN] and [TABLE_NAME] = @DESTOBJECT)
or
exists(select * from INFORMATION_SCHEMA.ROUTINE_COLUMNS where [COLUMN_NAME] = [QUERYVIEWRELATIONSHIP].[ROOTCOLUMN] and [TABLE_NAME] = @DESTOBJECT)
or
@MARTKEY is not null
);
open RELATIONSHIPSCURSOR;
fetch next from RELATIONSHIPSCURSOR into @RELATEDQUERYVIEWID, @PATHALIAS, @ROOTCOLUMN, @RELATEDCOLUMN, @SEQUENCE, @JOINTYPE, @JOINPARAMETERS, @CARDINALITYTYPE, @DISPLAYALIAS, @DISPLAYALIASRESOURCEKEY, @RESOURCEFILEASSEMBLYNAME, @RESOURCEFILECLASSNAME, @OBSOLETE, @USEFOREXPORTDEFINITIONSONLY;
while (@@fetch_status = 0)
begin
if exists(select * from dbo.[QUERYVIEWRELATIONSHIP] where [ROOTQUERYVIEWID] = @DESTOBJECTID and [PATHALIAS] = @PATHALIAS)
update dbo.[QUERYVIEWRELATIONSHIP] set
[ROOTQUERYVIEWID] = @DESTOBJECTID,
[RELATEDQUERYVIEWID] = @RELATEDQUERYVIEWID,
[ADDEDBYQUERYVIEWID] = @ADDEDBYQUERYVIEWID,
[PATHALIAS] = @PATHALIAS,
[ROOTCOLUMN] = @ROOTCOLUMN,
[RELATEDCOLUMN] = @RELATEDCOLUMN,
[SEQUENCE] = @SEQUENCE,
[JOINTYPE] = @JOINTYPE,
[JOINPARAMETERS] = @JOINPARAMETERS,
[CARDINALITYTYPE] = @CARDINALITYTYPE,
[DISPLAYALIAS] = @DISPLAYALIAS,
[DISPLAYALIASRESOURCEKEY] = @DISPLAYALIASRESOURCEKEY,
[RESOURCEFILEASSEMBLYNAME] = @RESOURCEFILEASSEMBLYNAME,
[RESOURCEFILECLASSNAME] = @RESOURCEFILECLASSNAME,
[OBSOLETE] = @OBSOLETE,
[USEFOREXPORTDEFINITIONSONLY] = @USEFOREXPORTDEFINITIONSONLY,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
where [ROOTQUERYVIEWID] = @DESTOBJECTID
and [PATHALIAS] = @PATHALIAS;
else
insert into dbo.[QUERYVIEWRELATIONSHIP] (
[ROOTQUERYVIEWID],
[RELATEDQUERYVIEWID],
[ADDEDBYQUERYVIEWID],
[PATHALIAS],
[ROOTCOLUMN],
[RELATEDCOLUMN],
[SEQUENCE],
[JOINTYPE],
[JOINPARAMETERS],
[CARDINALITYTYPE],
[DISPLAYALIAS],
[DISPLAYALIASRESOURCEKEY],
[RESOURCEFILEASSEMBLYNAME],
[RESOURCEFILECLASSNAME],
[OBSOLETE],
[USEFOREXPORTDEFINITIONSONLY],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
) values (
@DESTOBJECTID,
@RELATEDQUERYVIEWID,
@DESTOBJECTID,
@PATHALIAS,
@ROOTCOLUMN,
@RELATEDCOLUMN,
@SEQUENCE,
@JOINTYPE,
@JOINPARAMETERS,
@CARDINALITYTYPE,
@DISPLAYALIAS,
@DISPLAYALIASRESOURCEKEY,
@RESOURCEFILEASSEMBLYNAME,
@RESOURCEFILECLASSNAME,
@OBSOLETE,
@USEFOREXPORTDEFINITIONSONLY,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
fetch next from RELATIONSHIPSCURSOR into @RELATEDQUERYVIEWID, @PATHALIAS, @ROOTCOLUMN, @RELATEDCOLUMN, @SEQUENCE, @JOINTYPE, @JOINPARAMETERS, @CARDINALITYTYPE, @DISPLAYALIAS, @DISPLAYALIASRESOURCEKEY, @RESOURCEFILEASSEMBLYNAME, @RESOURCEFILECLASSNAME, @OBSOLETE, @USEFOREXPORTDEFINITIONSONLY;
end
close RELATIONSHIPSCURSOR;
deallocate RELATIONSHIPSCURSOR;
end try
begin catch
exec dbo.[USP_RAISE_ERROR];
return 1;
end catch
return 0;