USP_SEARCH_SMARTQUERYINSTANCE
Search form for smart query instances.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@NAME | nvarchar(255) | IN | Name |
@RECORDTYPEID | uniqueidentifier | IN | Record type |
@MAXROWS | smallint | IN | Input parameter indicating the maximum number of rows to return. |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
Definition
Copy
CREATE procedure dbo.USP_SEARCH_SMARTQUERYINSTANCE
(
@NAME nvarchar(255) = null,
@RECORDTYPEID uniqueidentifier = null,
@MAXROWS smallint = 500,
@CURRENTAPPUSERID uniqueidentifier = null
)
as
set nocount on;
set @NAME = dbo.UFN_SEARCHCRITERIA_GETLIKEPARAMETERVALUE(@NAME, 0, null);
-- for backwards compatibility, if no @CURRENTAPPUSERID is given, then return all instances
declare @ISSYSADMIN bit;
if (@CURRENTAPPUSERID is null) or (@CURRENTAPPUSERID = '00000000-0000-0000-0000-000000000000')
set @ISSYSADMIN = 1
else
select @ISSYSADMIN = ISSYSADMIN from dbo.APPUSER where ID = @CURRENTAPPUSERID;
/*Filter out smart query instances involving smart queries to which the user does not have access*/
if @ISSYSADMIN = 0
begin
declare @OKSMARTQUERIES table (SMARTQUERYCATALOGID uniqueidentifier);
insert into @OKSMARTQUERIES (SMARTQUERYCATALOGID)
select SMARTQUERYCATALOG.ID from dbo.SMARTQUERYCATALOG
where exists (
select [OKSMARTQUERIES].SMARTQUERYCATALOGID
from dbo.UFN_SECURITY_GETGRANTEDSMARTQUERIESFORUSER(@CURRENTAPPUSERID) as [OKSMARTQUERIES] where [OKSMARTQUERIES].SMARTQUERYCATALOGID = SMARTQUERYCATALOG.ID);
end;
select top(@MAXROWS)
SMARTQUERYINSTANCE.ID,
SMARTQUERYINSTANCE.NAME,
SMARTQUERYINSTANCE.DESCRIPTION,
RECORDTYPE.NAME,
SMARTQUERYINSTANCE.ID as [QUERYID],
'Smart' as [QUERYTYPE],
RECORDTYPE.ID as [RECORDTYPEID]
from dbo.SMARTQUERYINSTANCE
inner join dbo.SMARTQUERYCATALOG on SMARTQUERYINSTANCE.SMARTQUERYCATALOGID = SMARTQUERYCATALOG.ID
left join dbo.RECORDTYPE on SMARTQUERYCATALOG.RECORDTYPEID = RECORDTYPE.ID
where
/* Filter out restricted smart queries */
(@ISSYSADMIN = 1
/*This will return a list of smart queries in use by the smart query but not in the OK smart queries table variable;
These smart queries should not be returned to the client.*/
or
exists (select [OKSMARTQUERIES].SMARTQUERYCATALOGID
from @OKSMARTQUERIES as [OKSMARTQUERIES]
where [OKSMARTQUERIES].SMARTQUERYCATALOGID = SMARTQUERYCATALOG.ID)
and
(dbo.UFN_SECURITY_APPUSER_GRANTED_SMARTQUERYINSTANCE_IN_SYSTEMROLE(@CURRENTAPPUSERID, SMARTQUERYINSTANCE.ID) = 1)
)
and
(@NAME is null or SMARTQUERYINSTANCE.NAME like @NAME) and (@RECORDTYPEID is null or @RECORDTYPEID = RECORDTYPE.ID);