USP_IDSETREGISTER_CREATEORUPDATEFORADHOCQUERY
Registers a smart query id set.
Parameters
| Parameter | Parameter Type | Mode | Description |
|---|---|---|---|
| @ADHOCQUERYID | uniqueidentifier | IN | |
| @USEINQUERYDESIGNER | bit | IN | |
| @STATIC | bit | IN | |
| @NUMROWS | int | IN | |
| @CHANGEAGENTID | uniqueidentifier | IN | |
| @IDSETREGISTERID | uniqueidentifier | INOUT |
Definition
Copy
CREATE procedure dbo.USP_IDSETREGISTER_CREATEORUPDATEFORADHOCQUERY
(
@ADHOCQUERYID [uniqueidentifier],
@USEINQUERYDESIGNER [bit] = 0,
@STATIC [bit] = 0,
@NUMROWS [int] = null,
@CHANGEAGENTID [uniqueidentifier] = null,
@IDSETREGISTERID uniqueidentifier = null output
)
with execute as caller
as
set nocount on
declare @ID uniqueidentifier
declare @IDSETFUNCTION nvarchar(128)
declare @IDSETFUNCTIONWITHASOFDATE nvarchar(255)
select @ID = IDSETREGISTERID from dbo.IDSETREGISTERADHOCQUERY where ADHOCQUERYID = @ADHOCQUERYID
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
if @STATIC is null
set @STATIC = 0
if @USEINQUERYDESIGNER is null
set @USEINQUERYDESIGNER = 0
if @ID is null
-- add new row to register
begin
set @IDSETFUNCTION = dbo.UFN_ADHOCQUERY_MAKEIDSETFUNCTIONNAME(@ADHOCQUERYID)
set @IDSETFUNCTIONWITHASOFDATE = @IDSETFUNCTION + '_WITHASOFDATE';
if @IDSETREGISTERID is null
set @IDSETREGISTERID = newid()
insert into dbo.IDSETREGISTER (ID, NAME, DESCRIPTION, SITEID, RECORDTYPEID, DBOBJECTNAME, DBOBJECTNAMEWITHASOFDATE, OBJECTTYPE, STATIC, NUMROWS, USEINQUERYDESIGNER, ADDEDBYID, CHANGEDBYID, OWNERID)
select @IDSETREGISTERID, ADHOCQUERY.NAME + ' (Ad-hoc Query)', ADHOCQUERY.DESCRIPTION, ADHOCQUERY.SITEID, QUERYVIEWCATALOG.RECORDTYPEID, @IDSETFUNCTION, @IDSETFUNCTIONWITHASOFDATE, '1', @STATIC, @NUMROWS, @USEINQUERYDESIGNER, @CHANGEAGENTID, @CHANGEAGENTID, OWNERID
from dbo.ADHOCQUERY
join dbo.QUERYVIEWCATALOG on QUERYVIEWCATALOG.ID = ADHOCQUERY.QUERYVIEWCATALOGID
where ADHOCQUERY.ID = @ADHOCQUERYID
insert into dbo.IDSETREGISTERADHOCQUERY (ID, IDSETREGISTERID, ADHOCQUERYID, ADDEDBYID, CHANGEDBYID) values
(newid(), @IDSETREGISTERID, @AdHocQueryID, @ChangeAgentID, @ChangeAgentID)
end
else
begin
set @IDSETREGISTERID = @ID
if @USEINQUERYDESIGNER = 0 and exists(select ID from dbo.ADHOCQUERY where dbo.UFN_ADHOCQUERY_IDSETINUSE(@ID, QUERYDEFINITIONXML) = 1)
begin
raiserror('BBERR_IDSET_INUSEBYADHOCQUERY', 14, 44)
raiserror('The ''Show in query designer'' option cannot be set to false because the ID set is in use by another ad-hoc query.', 16, 1)
return 1;
end
-- update existing register info
update dbo.IDSETREGISTER
set NAME = ADHOCQUERY.NAME + ' (Ad-hoc Query)', DESCRIPTION = ADHOCQUERY.DESCRIPTION, SITEID = ADHOCQUERY.SITEID, STATIC=@STATIC, NUMROWS=@NUMROWS, USEINQUERYDESIGNER = @USEINQUERYDESIGNER, CHANGEDBYID=@CHANGEAGENTID, DATECHANGED=getDate(), OWNERID = ADHOCQUERY.OWNERID
from dbo.ADHOCQUERY where IDSETREGISTER.ID = @ID and ADHOCQUERY.ID = @ADHOCQUERYID
end