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 13: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 ;