BD.FUNC.COM FUNC TIENE PERMISO
1 Descripción
2 Parámetros
USE `nimitz`;
DROP function IF EXISTS `nimitz`.`COM_FUNC_TIENE_PERMISO`;
DELIMITER $$
USE `nimitz`$$
CREATE DEFINER=`adminNimitz`@`%` FUNCTION `COM_FUNC_TIENE_PERMISO`(
PAR_ORIGEN VARCHAR(32),
PAR_DESTINO VARCHAR(32)
) RETURNS varchar(64) CHARSET utf8
MODIFIES SQL DATA
DETERMINISTIC
BEGIN
declare VAR_NO_HAY BOOLEAN;
declare VAR_ID_CATEGORIA INT;
declare VAR_C_MASCARA VARCHAR(45);
declare SQL_AGENTE CURSOR for
select `ID_CATEGORIA`
from `ACD_USUARIOS`
where `C_LOGIN_NUMERICO`=PAR_ORIGEN;
declare SQL_EXTENSION CURSOR for
select `D`.`ID_CATEGORIA`
from `CEN_DISPOSITIVOS` as `D`, `CEN_EXTENSIONES` as `E`
where `D`.`ID`=`E`.`ID` and `E`.`C_NOMBRE`=PAR_ORIGEN;
declare SQL_DESTINOS CURSOR for
select `C_DESTINO`
from `CEN_DESTINO_RUTAS`
where `ID_CATEGORIA`=VAR_ID_CATEGORIA;
declare CONTINUE HANDLER FOR NOT FOUND set VAR_NO_HAY=TRUE;
set VAR_NO_HAY=FALSE;
set VAR_ID_CATEGORIA=0;
open SQL_AGENTE;
fetch SQL_AGENTE into VAR_ID_CATEGORIA;
close SQL_AGENTE;
if VAR_NO_HAY
then set VAR_NO_HAY=FALSE;
set VAR_ID_CATEGORIA=0;
open SQL_EXTENSION;
fetch SQL_EXTENSION into VAR_ID_CATEGORIA;
close SQL_EXTENSION;
if VAR_NO_HAY
then
return 'No existe el origen ni como agente ni como extension';
end if;
end if;
open SQL_DESTINOS;
if VAR_ID_CATEGORIA > 0
then
set VAR_NO_HAY=FALSE;
set VAR_ID_CATEGORIA=0;
REPEAT
FETCH SQL_DESTINOS INTO VAR_C_MASCARA;
IF NOT VAR_NO_HAY THEN
IF locate (VAR_C_MASCARA,PAR_DESTINO) = 1
then
close SQL_DESTINOS;
return 'Ok';
END IF;
END IF;
UNTIL VAR_NO_HAY END REPEAT;
end if;
close SQL_DESTINOS;
return NULL; END$$
DELIMITER ;