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 ;