Hola a todos:
Estoy tratando de crear un procedimiento que me si un rango horario esta libre inserta una cita en dicho horario y si no genera un evento.... el caso es que no soy capaz de que me lo acepte la base de datos.... llevo toda la tarde haciendo pruebas y nada...
alguien me puede decir que hago mal?? trabajo con intebase y el ibconsole.
CREATE PROCEDURE Insertar_Cita ( ID_CLIENTE INTEGER, ID_USUARIO INTEGER,
ID_TRATAMIENTO INTEGER, FECHA DATE, INICIO TIME,
FIN TIME, AVISAR VARCHAR(2), ESTADO VARCHAR(2),
CICLICO VARCHAR(2), OBSERVACIONES VARCHAR(3000),
NOMBRE VARCHAR(50), TELEFONO VARCHAR(15),
SECUNDARIA VARCHAR(3), COSTE NUMERIC(10, 2),
COBRADA VARCHAR(3), PRIMERA_CITA VARCHAR(3),
PREV_ADELANTAMIENTO VARCHAR(10), DUO VARCHAR(3),
TRATAMIENTO VARCHAR(30) )
RETURNS (idcita INTEGER )
AS
DECLARE VARIABLE cita integer;
DECLARE VARIABLE conflicto integer;
BEGIN
SELECT COUNT(*)
FROM CITA
WHERE fecha=:fecha AND id_usuario=:id_usuario AND secunduaria=:secundaria
AND (
:inicio<fin AND fin<=:fin AND :inicio<=inicio AND inicio<:fin
AND (
( inicio<=:inicio AND :inicio<fin AND inicio<:fin AND :fin<=fin )
OR ( :inicio<=inicio AND inicio<:fin AND :inicio<fin AND fin<=:fin )
)
)
INTO :conflicto;
IF (:conflicto=0) THEN
BEGIN
:cita=GEN_ID(NUEVA_CITA,1);
INSERT INTO CITA (ID_CITA,ID_CLIENTE,ID_USUARIO,ID_TRATAMIENTO,FECHA,
INICIO, FIN, AVISAR,ESTADO,CICLICO,OBSERVACIONES,NOMBRE,
TELEFONO,SECUNDARIA,COSTE,COBRADA,PRIMERA_CITA,PREV_ADELANTAMIENTO
DUO,TRATAMIENTO)
VALUES
(:cita,:ID_CLIENTE,:ID_USUARIO,:ID_TRATAMIENTO,:FECHA,
:INICIO, :FIN, :AVISAR,:ESTADO,:CICLICO,:OBSERVACIONES,:NOMBRE,
:TELEFONO,:SECUNDARIA,:COSTE,:COBRADA,:PRIMERA_CITA,:PREV_ADELANTAMIENTO

UO,:TRATAMIENTO);
:idcita=:cita;
SUSPEND;
END;
ELSE POST_EVENT "falloInsercion";
END;
gracias a tod@s