Diferencia entre revisiones de «BD.FUNC.COM FUNC TIENE PERMISO»

De VIVAitwiki
Ir a la navegaciónIr a la búsqueda
(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 de entrada==
+
==Parámetros==
  
===PAR_ORIGEN===
+
USE `nimitz`;
VARCHAR(32),
 
  
===PAR_DESTINO===
+
DROP function IF EXISTS `nimitz`.`COM_FUNC_TIENE_PERMISO`;
VARCHAR(32)
 
  
==Retornos==
+
DELIMITER $$
varchar(64)
 
  
===No existe el origen ni como agente ni como extension===
+
USE `nimitz`$$
===Ok===
+
 
===NULL===
+
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 ;