Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Procedimiento no actualiza (https://www.clubdelphi.com/foros/showthread.php?t=76340)

Rockin 24-10-2011 17:44:45

Procedimiento no actualiza
 
Buenas tardes, tengo el siguiente SP:

Código SQL [-]
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.


La franja horaria es GMT +2. Ahora son las 17:23:14.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi