PDA

Ver la Versión Completa : Procedimiento no actualiza


Rockin
24-10-2011, 17:44:45
Buenas tardes, tengo el siguiente SP:


SET TERM ^ ;

CREATE PROCEDURE PEDIR_CONTACTO_LEADS
RETURNS(
TELEFONO CHAR(9) CHARACTER SET ISO8859_1,
PRIORIDAD INTEGER,
FECHA_PROX_CONTACTO DATE,
HORA_PROX_CONTACTO TIME)
AS
BEGIN
SELECT FIRST 1 CAST (TELEFONO AS CHAR(9)), PRIORIDAD, FECHA_PROX_CONTACTO, HORA_PROX_CONTACTO
FROM MOVILES_POPUP
WHERE
((ID_CAMPANIA = 'LEADS' AND PRIORIDAD IS NOT NULL
AND FECHA_PROX_CONTACTO = CURRENT_DATE and HORA_PROX_CONTACTO >= CURRENT_TIME AND PRIORIDAD >= 2)
OR (ID_CAMPANIA = 'LEADS' AND PRIORIDAD IS NOT NULL AND FECHA_PROX_CONTACTO = CURRENT_DATE AND PRIORIDAD = 1))
AND PRIORIDAD <> 0
ORDER BY PRIORIDAD ASC, HORA_PROX_CONTACTO ASC
INTO :TELEFONO , PRIORIDAD, FECHA_PROX_CONTACTO, HORA_PROX_CONTACTO ;

UPDATE MOVILES_POPUP SET PRIORIDAD = 0 WHERE TELEFONO = :TELEFONO;

suspend;


END;^

SET TERM ; ^


El cual me selecciona el primer registro que cumpla esas condiciones y luego me lo tiene que actualizar, pero nada, he revisado el procedimiento he hecho un debug y cumple todo los requisitos pero no actualiza el procedimiento.

¿Algien sabe en que estoy fallando? Le estoy dando vuelta a lo mismo pero no se que falla. La BD es Firebird 2.5

Saludos.

guillotmarc
24-10-2011, 18:01:58
Es posible que nada esté fallando, solo que aún no veas el cambio.

Recuerda que debes finalizar la transacción donde se ejecuta este procedimiento almacenado.

Recuerda también que donde consultes si se ha realizado el cambio, se debe empezar una nueva transacción "después" de haber finalizado la transacción de modificación.

Saludos.

guillotmarc
24-10-2011, 18:04:11
En cualquier caso, en herramientas como IB-Expert tienes depuradores de procedimientos almacenados, con el que podrás comprobar si tu procedimiento funciona como esperabas.

Saludos.

Rockin
24-10-2011, 21:15:02
Hola:
Lo estoy ejecutando directamente desde la BD con EMS Firebird y no me actualiza. El depurador me lo pone todo correcto, incluo me dice:

Executed OK, 1 rows fetched (0,39 sec)
1 record(s) was(were) updated in MOVILES_POPUP

Pero luego voy al registro y sigue igual.
Voy a probar a lanzar el SP desde Delphi a ver si la transaccion que tiene un commit asociado lo ejecuta correctamente.

Saludos

mightydragonlor
24-10-2011, 23:24:51
te falta darle commit en el EMS.

Rockin
25-10-2011, 10:32:50
Si, era eso, gracias.