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 ;