BD.FUNC.ACD FUNC CLI SEGMENTOS CREAR

De VIVAitwiki
Ir a la navegaciónIr a la búsqueda

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 ;