
[dbo].[ols_sp_setAreaCodeByUser]
CREATE procedure ols_sp_setAreaCodeByUser
( @_uri nvarchar(255),
@_obj_uuid binary(16),
@_object_type integer
)
as
begin
declare @def_area_ace integer;
declare @sec_level int;
set nocount on;
if( @_uri is null)
begin
set @def_area_ace = (select set_val_lng from ca_settings where set_id = 900);
set @sec_level = 4;
end
else
begin
select @def_area_ace = (select [dbo].ols_fn_getAreaAceByUser(@_uri));
if ( @def_area_ace is null)
begin
raiserror ('Error 9017: OLS: default area ace in ca_settings not found', 16,1);
return;
end;
set @sec_level = (select [dbo].ols_fn_getAreaSecLevelByUser(@_uri));
end;
if( select count(*) from ols_area_ace where object_def_uuid = @_obj_uuid) > 0
begin
update ols_area_ace
set area_ace = @def_area_ace, security_level = @sec_level
where object_def_uuid = @_obj_uuid;
end
else
begin
insert into ols_area_ace (object_def_uuid, area_ace, object_type, security_level, creation_user)
values (@_obj_uuid, @def_area_ace, @_object_type, @sec_level, @_uri);
end;
end;
GO
GRANT EXECUTE ON [dbo].[ols_sp_setAreaCodeByUser] TO [ca_itrm_group]
GRANT EXECUTE ON [dbo].[ols_sp_setAreaCodeByUser] TO [ca_itrm_group_ams]
GO