USP_QUERYVIEW_CREATEORUPDATEFUNCTIONRELATIONSHIP
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ROOTQUERYVIEW | nvarchar(128) | IN | |
@RELATEDTVF | nvarchar(128) | IN | |
@ADDEDBYQUERYVIEWID | uniqueidentifier | IN | |
@ROOTCOLUMN | nvarchar(128) | IN | |
@RELATEDCOLUMN | nvarchar(128) | IN | |
@PATHALIAS | nvarchar(128) | IN | |
@JOINTYPE | tinyint | IN | |
@JOINPARAMETERS | nvarchar(255) | IN | |
@SEQUENCE | int | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@DISPLAYALIAS | nvarchar(100) | IN | |
@DISPLAYALIASRESOURCEKEY | nvarchar(100) | IN | |
@RESOURCEFILEASSEMBLYNAME | nvarchar(max) | IN | |
@RESOURCEFILECLASSNAME | nvarchar(max) | IN | |
@OBSOLETE | bit | IN | |
@USEFOREXPORTDEFINITIONSONLY | bit | IN | |
@MARTKEY | nvarchar(255) | IN |
Definition
Copy
CREATE procedure dbo.[USP_QUERYVIEW_CREATEORUPDATEFUNCTIONRELATIONSHIP]
(
@ROOTQUERYVIEW nvarchar(128),
@RELATEDTVF nvarchar(128),
@ADDEDBYQUERYVIEWID uniqueidentifier,
@ROOTCOLUMN nvarchar(128),
@RELATEDCOLUMN nvarchar(128),
@PATHALIAS nvarchar(128) = null,
@JOINTYPE tinyint = 0,
@JOINPARAMETERS nvarchar(255) = null,
@SEQUENCE int = -1,
@CHANGEAGENTID uniqueidentifier = null,
@DISPLAYALIAS nvarchar(100) = null,
@DISPLAYALIASRESOURCEKEY nvarchar(100) = null,
@RESOURCEFILEASSEMBLYNAME nvarchar(max) = null,
@RESOURCEFILECLASSNAME nvarchar(max) = null,
@OBSOLETE bit = 0,
@USEFOREXPORTDEFINITIONSONLY bit = 0,
@MARTKEY nvarchar(255) = null
)
with execute as caller
as
set nocount on;
declare @ID as uniqueidentifier;
declare @COL as nvarchar(128);
declare @CURRENTSEQUENCE as int;
declare @ROOTQUERYVIEWID uniqueidentifier;
declare @RELATEDQUERYVIEWID uniqueidentifier;
if @MARTKEY is null
begin
-- this may be a view or a function, so check for both cases
select @COL = [COLUMN_NAME] from INFORMATION_SCHEMA.COLUMNS where [TABLE_SCHEMA] = 'dbo' and [TABLE_NAME] = @ROOTQUERYVIEW and [COLUMN_NAME] = @ROOTCOLUMN;
if @COL is null
begin
select @COL = [COLUMN_NAME] from INFORMATION_SCHEMA.ROUTINE_COLUMNS where [TABLE_SCHEMA] = 'dbo' and [TABLE_NAME] = @ROOTQUERYVIEW and [COLUMN_NAME] = @ROOTCOLUMN;
if @COL is null
begin
raiserror('Column ''%s'' does not exist in ''%s''', 16, 1, @RELATEDCOLUMN, @RELATEDTVF);
return 1;
end
end
-- validate the function name and column passed in
select @COL = [COLUMN_NAME] from INFORMATION_SCHEMA.ROUTINE_COLUMNS where [TABLE_SCHEMA] = 'dbo' and [TABLE_NAME] = @RELATEDTVF and [COLUMN_NAME] = @RELATEDCOLUMN;
if @COL is null
begin
raiserror('Column ''%s'' does not exist in function ''%s''', 16, 1, @RELATEDCOLUMN, @RELATEDTVF);
return 2;
end
end
if @JOINTYPE <> 2 and @JOINTYPE <> 3
begin
raiserror('Invalid join type specified', 16, 1);
return 3;
end
-- default changeagent ID if none is passed in
if @CHANGEAGENTID is null
exec dbo.[USP_CHANGEAGENT_GETORCREATECHANGEAGENT] @CHANGEAGENTID output;
if @PATHALIAS is null or len(@PATHALIAS) = 0
set @PATHALIAS = @RELATEDTVF
if @JOINPARAMETERS is null
set @JOINPARAMETERS = '0';
if @DISPLAYALIAS is null
set @DISPLAYALIAS = '';
if @DISPLAYALIASRESOURCEKEY is null
set @DISPLAYALIASRESOURCEKEY = '';
if @RESOURCEFILEASSEMBLYNAME is null
set @RESOURCEFILEASSEMBLYNAME = '';
if @RESOURCEFILECLASSNAME is null
set @RESOURCEFILECLASSNAME = '';
select
@ROOTQUERYVIEWID = [ID]
from dbo.[QUERYVIEWCATALOG]
where [OBJECTNAME] = @ROOTQUERYVIEW;
select
@RELATEDQUERYVIEWID = [ID]
from dbo.[QUERYVIEWCATALOG]
where [OBJECTNAME] = @RELATEDTVF;
--retrieve ID if it already exists
select
@ID = [ID],
@CURRENTSEQUENCE = [SEQUENCE]
from dbo.[QUERYVIEWRELATIONSHIP]
where [ROOTQUERYVIEWID] = @ROOTQUERYVIEWID
and [RELATEDQUERYVIEWID] = @RELATEDQUERYVIEWID
and [PATHALIAS] = @PATHALIAS;
if @SEQUENCE is null or @SEQUENCE = -1
begin
if @ID is null
select
@SEQUENCE = isnull(max([SEQUENCE]), -1) + 1
from dbo.[QUERYVIEWRELATIONSHIP]
where [ROOTQUERYVIEWID] = @ROOTQUERYVIEWID;
else
set @SEQUENCE = @CURRENTSEQUENCE;
end
declare @CURRENTDATE datetime = getdate();
if @ID is null
insert into dbo.[QUERYVIEWRELATIONSHIP] (
[ROOTQUERYVIEWID],
[RELATEDQUERYVIEWID],
[ADDEDBYQUERYVIEWID],
[ROOTCOLUMN],
[RELATEDCOLUMN],
[PATHALIAS],
[JOINTYPE],
[JOINPARAMETERS],
[SEQUENCE],
[DISPLAYALIAS],
[DISPLAYALIASRESOURCEKEY],
[RESOURCEFILEASSEMBLYNAME],
[RESOURCEFILECLASSNAME],
[OBSOLETE],
[USEFOREXPORTDEFINITIONSONLY],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
) values (
@ROOTQUERYVIEWID,
@RELATEDQUERYVIEWID,
@ADDEDBYQUERYVIEWID,
@ROOTCOLUMN,
@RELATEDCOLUMN,
@PATHALIAS,
@JOINTYPE,
@JOINPARAMETERS,
@SEQUENCE,
@DISPLAYALIAS,
@DISPLAYALIASRESOURCEKEY,
@RESOURCEFILEASSEMBLYNAME,
@RESOURCEFILECLASSNAME,
@OBSOLETE,
@USEFOREXPORTDEFINITIONSONLY,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
else
update dbo.[QUERYVIEWRELATIONSHIP] set
[ROOTQUERYVIEWID] = @ROOTQUERYVIEWID,
[RELATEDQUERYVIEWID] = @RELATEDQUERYVIEWID,
[ADDEDBYQUERYVIEWID] = @ADDEDBYQUERYVIEWID,
[ROOTCOLUMN] = @ROOTCOLUMN,
[RELATEDCOLUMN] = @RELATEDCOLUMN,
[PATHALIAS] = @PATHALIAS,
[JOINTYPE] = @JOINTYPE,
[DISPLAYALIAS] = @DISPLAYALIAS,
[DISPLAYALIASRESOURCEKEY] = @DISPLAYALIASRESOURCEKEY,
[RESOURCEFILEASSEMBLYNAME] = @RESOURCEFILEASSEMBLYNAME,
[RESOURCEFILECLASSNAME] = @RESOURCEFILECLASSNAME,
[JOINPARAMETERS] = @JOINPARAMETERS,
[SEQUENCE] = @SEQUENCE,
[OBSOLETE] = @OBSOLETE,
[USEFOREXPORTDEFINITIONSONLY] = @USEFOREXPORTDEFINITIONSONLY,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
where ID = @ID;
return 0;