Diferencia entre revisiones de «BD.FUNC.COM FUNC TIENE PERMISO»
(Página creada con «==Descripción== ==Parámetros de entrada== ===PAR_ORIGEN=== VARCHAR(32), ===PAR_DESTINO=== VARCHAR(32) ==Retornos== varchar(64) ===No existe el origen ni como agente ...») |
|||
| Línea 1: | Línea 1: | ||
==Descripción== | ==Descripción== | ||
| − | ==Parámetros | + | ==Parámetros== |
| − | + | USE `nimitz`; | |
| − | |||
| − | + | DROP function IF EXISTS `nimitz`.`COM_FUNC_TIENE_PERMISO`; | |
| − | |||
| − | + | DELIMITER $$ | |
| − | |||
| − | ===No existe el origen ni como agente ni como extension=== | + | 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 ; | ||
Revisión actual del 14:45 12 nov 2021
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 ;