USP_SIMPLEDATALIST_SOURCESWITHQUERIES

Parameters

Parameter Parameter Type Mode Description
@CURRENTAPPUSERID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.[USP_SIMPLEDATALIST_SOURCESWITHQUERIES](@CURRENTAPPUSERID uniqueidentifier)
as
set nocount on;

declare @ISSYSADMIN bit;
declare @HASQUERYVIEWSYSTEMPRIVILEGE bit = 0;

declare @OKVIEWS table ([OBJECTNAME] nvarchar(128));
declare @SMARTCATALOGITEMS table ([SMARTQUERYCATALOGID] uniqueidentifier);    

select @ISSYSADMIN = [ISSYSADMIN] from dbo.[APPUSER] where [ID] = @CURRENTAPPUSERID;

if @ISSYSADMIN = 0
  select @HASQUERYVIEWSYSTEMPRIVILEGE = dbo.[UFN_SECURITY_APPUSER_GRANTED_SYSTEMPRIVILEGE_IN_SYSTEMROLE](@CURRENTAPPUSERID, '5f9bbcaf-9c67-4539-9880-ae4f709a9c1f');

/* Filter out any ad-hoc queries involving query views to which the current user does not have rights */
if (@ISSYSADMIN = 0 and @HASQUERYVIEWSYSTEMPRIVILEGE = 0)
  begin

    insert into @OKVIEWS ([OBJECTNAME])
      select 
        [QUERYVIEWCATALOG].[OBJECTNAME] 
      from dbo.[QUERYVIEWCATALOG]
      where [ROOTOBJECT] = 1 and
      exists (
        select 
          [OKVIEWS].[QUERYVIEWCATALOGID]
        from dbo.[UFN_SECURITY_GETGRANTEDQUERYVIEWSFORUSER](@CURRENTAPPUSERID) as [OKVIEWS] 
        where [OKVIEWS].[QUERYVIEWCATALOGID] = [QUERYVIEWCATALOG].[ID]);
  end;

if @ISSYSADMIN = 0

  begin

    insert into @SMARTCATALOGITEMS ([SMARTQUERYCATALOGID])

      select
        [SMARTQUERYCATALOG].[ID]
      from dbo.[SMARTQUERYCATALOG]
      where
      exists
      (
      select 
        [SMARTCATALOGITEMS].[SMARTQUERYCATALOGID]
      from dbo.[UFN_SECURITY_GETGRANTEDSMARTQUERIESFORUSER](@CURRENTAPPUSERID) as [SMARTCATALOGITEMS] where [SMARTCATALOGITEMS].[SMARTQUERYCATALOGID] = [SMARTQUERYCATALOG].[ID]
      );
  end


begin

  select
    distinct
    [VALUE],
    [LABEL]
  from
  (
  select 
    [QUERYVIEWCATALOG].[ID] as [VALUE],
    [QUERYVIEWCATALOG].[DISPLAYNAME] as [LABEL]
  from dbo.[QUERYVIEWCATALOG] 
  inner join dbo.[ADHOCQUERY] on [QUERYVIEWCATALOG].[ID] = [ADHOCQUERY].[QUERYVIEWCATALOGID]
  where [QUERYVIEWCATALOG].[ROOTOBJECT] = 1 and
  /* Filter out restricted query views */
  ((@ISSYSADMIN = 1 or @HASQUERYVIEWSYSTEMPRIVILEGE = 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.[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 */

    union

    select
    [SMARTQUERYCATALOG].[ID] as [VALUE],
        [SMARTQUERYCATALOG].[NAME] as [LABEL]
    from dbo.[SMARTQUERYCATALOG] 
    inner join dbo.[SMARTQUERYINSTANCE] on [SMARTQUERYCATALOG].[ID] = [SMARTQUERYINSTANCE].[SMARTQUERYCATALOGID]
  where @ISSYSADMIN = 1
  or
  exists (
    select 
      [SMARTCATALOGITEMS].[SMARTQUERYCATALOGID]
    from @SMARTCATALOGITEMS as [SMARTCATALOGITEMS]
    where [SMARTCATALOGITEMS].[SMARTQUERYCATALOGID] = [SMARTQUERYCATALOG].[ID])
    and
    (dbo.[UFN_SECURITY_APPUSER_GRANTED_SMARTQUERYINSTANCE_IN_SYSTEMROLE](@CURRENTAPPUSERID, [SMARTQUERYINSTANCE].[ID]) = 1)

  ) as [QUERIES]

  order by [LABEL];

end