
[dbo].[ols_fn_getGroupAreaPerm]
CREATE function [dbo].ols_fn_getGroupAreaPerm(
@object_uuid binary(16),
@_object_type integer
)
returns integer
as
begin
declare @gcnt integer;
set @gcnt = 0;
select @gcnt = ( select count(*) cnt from ca_group_member m, ca_group_def g
where m.member_uuid = @object_uuid
and m.group_uuid = g.group_uuid
and g.security_group = 1);
if( @gcnt > 0 )
begin
declare @object_ace integer;
declare @parent_ace integer;
set @parent_ace = 0;
set @object_ace = 0;
declare parent_ace_list cursor local for
select area_ace
from ols_area_ace
where object_def_uuid in
(select g.group_uuid from ca_group_member m , ca_group_def g
where m.member_uuid = @object_uuid
and m.group_uuid = g.group_uuid
and g.security_group = 1)
open parent_ace_list
fetch from parent_ace_list into @parent_ace
while @@fetch_status = 0
begin
select @object_ace = (@object_ace | @parent_ace)
fetch from parent_ace_list into @parent_ace
end
close parent_ace_list
deallocate parent_ace_list
return @object_ace;
end;
return NULL;
end
GO
GRANT EXECUTE ON [dbo].[ols_fn_getGroupAreaPerm] TO [ca_itrm_group]
GRANT EXECUTE ON [dbo].[ols_fn_getGroupAreaPerm] TO [ca_itrm_group_ams]
GO