USP_ADHOCQUERY_GETLIST
Returns a list of ad-hoc queries based on various criteria.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@RECORDTYPEID | uniqueidentifier | IN | |
@QUERYCATEGORYCODEID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_ADHOCQUERY_GETLIST(@CURRENTAPPUSERID uniqueidentifier, @RECORDTYPEID uniqueidentifier = null, @QUERYCATEGORYCODEID uniqueidentifier = null)
with execute as caller
as
set nocount on;
declare @QUERYCATEGORYCODEIDNOTNULL as uniqueidentifier;
declare @RECORDTYPEIDNOTNULL as uniqueidentifier;
if @RECORDTYPEID = '00000000-0000-0000-0000-000000000001'
begin
set @RECORDTYPEIDNOTNULL = null;
end
else
begin
set @RECORDTYPEIDNOTNULL = @RECORDTYPEID;
end;
if @QUERYCATEGORYCODEID = '00000000-0000-0000-0000-000000000001'
begin
set @QUERYCATEGORYCODEIDNOTNULL = null;
end
else
begin
set @QUERYCATEGORYCODEIDNOTNULL = @QUERYCATEGORYCODEID;
end;
declare @ISSYSADMIN bit;
select @ISSYSADMIN = ISSYSADMIN from dbo.APPUSER where ID = @CURRENTAPPUSERID;
/* Filter out any ad-hoc queries involving query views to which the current user does not have rights */
if @ISSYSADMIN = 0
begin
declare @OKVIEWS table (OBJECTNAME nvarchar(128));
insert into @OKVIEWS (OBJECTNAME)
select QUERYVIEWCATALOG.OBJECTNAME from dbo.QUERYVIEWCATALOG
where exists (
select [OKVIEWS].QUERYVIEWCATALOGID
from dbo.UFN_SECURITY_GETGRANTEDQUERYVIEWSFORUSER(@CURRENTAPPUSERID) as [OKVIEWS] where [OKVIEWS].QUERYVIEWCATALOGID = QUERYVIEWCATALOG.ID);
end;
select ADHOCQUERY.ID,
ADHOCQUERY.NAME,
ADHOCQUERY.DESCRIPTION,
QUERYVIEWCATALOG.RECORDTYPEID,
RECORDTYPE.NAME as [RECORDTYPE_NAME],
ADHOCQUERY.QUERYCATEGORYCODEID,
QUERYCATEGORYCODE.DESCRIPTION as [QUERYCATEGORYCODE_DESCRIPTION],
APPUSER.USERNAME as [OWNER],
ADHOCQUERY.OWNERID,
ADHOCQUERY.OTHERSCANMODIFY,
ADHOCQUERY.DATEADDED,
CHANGEAGENT.USERNAME as [ADDEDBY_USERNAME]
from dbo.ADHOCQUERY
inner join dbo.QUERYVIEWCATALOG on ADHOCQUERY.QUERYVIEWCATALOGID = QUERYVIEWCATALOG.ID
left join dbo.RECORDTYPE on QUERYVIEWCATALOG.RECORDTYPEID = RECORDTYPE.ID
left join dbo.APPUSER on ADHOCQUERY.OWNERID = dbo.APPUSER.ID
left join dbo.QUERYCATEGORYCODE on ADHOCQUERY.QUERYCATEGORYCODEID = QUERYCATEGORYCODE.ID
left join dbo.CHANGEAGENT on ADHOCQUERY.ADDEDBYID = CHANGEAGENT.ID
where
/* Filter out restricted query views */
(@ISSYSADMIN = 1
/* This will return a list of query views in use by the ad-hoc query but not in the OK views table variable;
These ad-hoc queries should not be returned to the client. */
or not exists(select [QUERYVIEWSINUSE].OBJECTNAME
from dbo.ADHOCQUERY as [ADHOCQUERYRIGHTSTEST]
outer apply dbo.UFN_ADHOCQUERY_QUERYVIEWSINUSE(ADHOCQUERY.QUERYDEFINITIONXML) as [QUERYVIEWSINUSE]
where not exists (
select [OKVIEWS].OBJECTNAME
from @OKVIEWS as [OKVIEWS] where [OKVIEWS].OBJECTNAME = [QUERYVIEWSINUSE].OBJECTNAME)))
/* End restricted query views filter */
and (@RECORDTYPEID is null or ((@RECORDTYPEIDNOTNULL is null and QUERYVIEWCATALOG.RECORDTYPEID is null) or (QUERYVIEWCATALOG.RECORDTYPEID = @RECORDTYPEIDNOTNULL)))
and (@QUERYCATEGORYCODEID is null or ((@QUERYCATEGORYCODEIDNOTNULL is null and ADHOCQUERY.QUERYCATEGORYCODEID is null) or (ADHOCQUERY.QUERYCATEGORYCODEID = @QUERYCATEGORYCODEIDNOTNULL)))
and QUERYVIEWCATALOG.ROOTOBJECT = 1
order by ADHOCQUERY.NAME;