Stored Procedures [dbo].[ols_sp_setAreaCodeByUser]
Properties
PropertyValue
ANSI Nulls OnYes
Quoted Identifier OnYes
Parameters
NameData TypeMax Length (Bytes)
@_urinvarchar(255)510
@_obj_uuidbinary(16)16
@_object_typeint4
Permissions
TypeActionOwning Principal
GrantExecuteca_itrm_group
GrantExecuteca_itrm_group_ams
SQL Script
/**
******************************************************
* set the area code for a ceration user for a secured
* object
*
* @param @_uri URI of the creation user
*
* @param @_obj_uuid uuid of the created object
*/


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
        -- update area settings - take it from the user's security profile

        set @def_area_ace = (select set_val_lng from ca_settings where set_id = 900);
        set @sec_level = 4; -- config level
    end
    else
    begin
        -- Uri given . calclaue the area ace
        select @def_area_ace = (select [dbo].ols_fn_getAreaAceByUser(@_uri));

        -- assert that we got a default area ace by URI
        if ( @def_area_ace is null)
        begin
            raiserror ('Error 9017: OLS: default area ace in ca_settings not found', 16,1);
            return;
        end;
        
        -- check if the area ace based on URI or default
        -- because we need to know if ols_fn_getAreaAceByUser() has found that the user is linke to a profiler
        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
            -- area ace exists --> update needed
            update ols_area_ace
                set area_ace = @def_area_ace, security_level = @sec_level
                where object_def_uuid = @_obj_uuid;
    end
    else
    begin
        -- area ace doesn't exist --> insert needed
          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
Uses
Used By