BD.FUNC.ACD FUNC CLI SEGMENTOS CREAR
Parámetros
USE `nimitz`;
DROP function IF EXISTS `nimitz`.`ACD_FUNC_CLI_SEGMENTOS_CREAR`;
DELIMITER $$
USE `nimitz`$$
CREATE DEFINER=`adminNimitz`@`%` FUNCTION `ACD_FUNC_CLI_SEGMENTOS_CREAR`(
PAR_C_ANI VARCHAR(32),
PAR_C_UCID VARCHAR(20),
PAR_C_VDN VARCHAR(45),
PAR_B_ES_DESVIADA BOOL
) RETURNS varchar(64) CHARSET utf8
MODIFIES SQL DATA
DETERMINISTIC
BEGIN
declare VAR_NO_HAY BOOLEAN;
declare VAR_ID_SEGMENTO INT;
declare VAR_B_ES_PROFESIONAL BOOL;
declare VAR_ID_DATOS INT;
declare VAR_C_CIP varchar(20);
declare VAR_C_NOMBRE varchar(45);
declare VAR_C_APELLIDO1 varchar(45);
declare VAR_C_APELLIDO2 varchar(45);
declare VAR_C_PROGRAMA varchar(45);
declare VAR_D_FECHA_INCLUSION varchar(20);
declare VAR_D_FECHA_ALTA varchar(20);
declare VAR_C_RELACION_PACIENTE varchar(60);
declare VAR_E_DEST_TRANSFER INT;
declare VAR_E_CODI int(11);
declare VAR_ES_DESVIADA int;
declare VAR_C_VDN varchar(45);
declare SQL_SEGMENTOS CURSOR for
select `ID`
from `DAT_SEGMENTOS`
where `C_UCID`=PAR_C_UCID AND (E_TIPO_SEGMENTO=200 or E_TIPO_SEGMENTO=250);
declare SQL_PACIENTES CURSOR for
select TP.`ID`,TP.`E_CODI`
from `CLI_TELEFONOS_PACIENTES` as TP
INNER JOIN `CLI_DATOS_PACIENTES` as DP on TP.`ID_DATOS_PACIENTE`=DP.`ID`
where TP.`C_ANI`=PAR_C_ANI;
declare SQL_PROFESIONALES CURSOR for
select TPR.`ID`,TPR.`E_CODI`,DPR.`C_NOMBRE`,DPR.`C_APELLIDO1`,DPR.`C_APELLIDO2`,
DPR.`C_REL_PACIENTE`
from `CLI_TELEFONOS_PROFESIONALES` as TPR
INNER JOIN `CLI_DATOS_PROFESIONALES` as DPR on TPR.`ID_DATOS_PROFESIONAL`=DPR.`ID`
where TPR.`C_ANI`=PAR_C_ANI;
declare CONTINUE HANDLER FOR NOT FOUND set VAR_NO_HAY=TRUE;
set VAR_B_ES_PROFESIONAL=false;
set VAR_ID_DATOS=NULL;
set VAR_C_CIP=;
set VAR_C_NOMBRE=;
set VAR_C_APELLIDO1=;
set VAR_C_APELLIDO2=;
set VAR_C_PROGRAMA=;
set VAR_D_FECHA_INCLUSION=;
set VAR_D_FECHA_ALTA=;
set VAR_C_RELACION_PACIENTE=;
set VAR_E_DEST_TRANSFER=0;
set VAR_E_CODI=0;
set VAR_ES_DESVIADA=PAR_B_ES_DESVIADA;
set VAR_C_VDN=PAR_C_VDN;
set VAR_NO_HAY=FALSE;
set VAR_ID_SEGMENTO=0;
open SQL_SEGMENTOS;
fetch SQL_SEGMENTOS into VAR_ID_SEGMENTO;
close SQL_SEGMENTOS;
if VAR_NO_HAY then return 'No existe segmento'; end if;
set VAR_NO_HAY=FALSE;
set VAR_ID_DATOS=0;
open SQL_PACIENTES;
fetch SQL_PACIENTES into VAR_ID_DATOS,
VAR_E_CODI;
close SQL_PACIENTES;
if VAR_NO_HAY
then set VAR_B_ES_PROFESIONAL=true;
set VAR_NO_HAY=FALSE;
set VAR_ID_DATOS=0;
open SQL_PROFESIONALES;
fetch SQL_PROFESIONALES into VAR_ID_DATOS,
VAR_E_CODI,
VAR_C_NOMBRE,
VAR_C_APELLIDO1,
VAR_C_APELLIDO2,
VAR_C_RELACION_PACIENTE; close SQL_PROFESIONALES;
if VAR_NO_HAY
then set VAR_B_ES_PROFESIONAL=true;
set VAR_ID_DATOS=NULL;
set VAR_C_CIP=;
set VAR_C_NOMBRE=;
set VAR_C_APELLIDO1=;
set VAR_C_APELLIDO2=;
set VAR_C_PROGRAMA=;
set VAR_D_FECHA_INCLUSION=;
set VAR_D_FECHA_ALTA=;
set VAR_C_RELACION_PACIENTE=;
set VAR_E_DEST_TRANSFER=0;
set VAR_E_CODI=0;
end if;
end if;
insert into `CLI_SEGMENTOS`
( `ID`,
`B_ES_PROFESIONAL`,
`ID_DATOS`,
`C_CIP`,
`C_NOMBRE`,
`C_APELLIDO1`,
`C_APELLIDO2`,
`C_PROGRAMA`,
`D_FECHA_INCLUSION`,
`D_FECHA_ALTA`,
`C_RELACION_PACIENTE`,
`E_DEST_TRANSFER`,
`E_CODI`,
`B_ES_DESVIADA`,
`C_VDN` )
values
(
VAR_ID_SEGMENTO,
VAR_B_ES_PROFESIONAL,
VAR_ID_DATOS,
VAR_C_CIP,
VAR_C_NOMBRE,
VAR_C_APELLIDO1,
VAR_C_APELLIDO2,
VAR_C_PROGRAMA,
VAR_D_FECHA_INCLUSION,
VAR_D_FECHA_ALTA,
VAR_C_RELACION_PACIENTE,
VAR_E_DEST_TRANSFER,
VAR_E_CODI,
VAR_ES_DESVIADA,
VAR_C_VDN );
return 'OK';
end$$ DELIMITER ;