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)
-   -   Ejecucion de Procedimiento Almacenado (https://www.clubdelphi.com/foros/showthread.php?t=73118)

DasGrun 01-04-2011 18:27:18

Ejecucion de Procedimiento Almacenado
 
Hola!!!

Tengo la siguiente Duda, yo quiero crear un procedimiento donde la consulta(query) me funciona correctamente pero cuando creo el procedimiento el mensaje del resultado me dice que actualizo correctamente pero cuando verifico en la tabla no se dan los resultados.

esta es la consulta y me funciona correctamente
Código SQL [-]
 UPDATE
  MA_CHEQUE
SET
  MA_CHEQUE.CANTIDAD_LETRAS =  'DIEZ DOLARES CON 15/100'
WHERE
  MA_CHEQUE.CHEQUE_ID = 2

Ahora este es el procedimiento almacenado que he creado y no actualiza los datos.

Código SQL [-]
CREATE PROCEDURE SP_INSERTAR_CANTLETRAS(
  CHEQUE_ID BIGINT DEFAULT NULL,
  CANTIDAD_LETRAS VARCHAR(250) CHARACTER SET ISO8859_1 DEFAULT NULL)
AS
BEGIN
  /* Procedure body */
 UPDATE
  MA_CHEQUE
SET
  MA_CHEQUE.CANTIDAD_LETRAS =  :CANTIDAD_LETRAS
WHERE
  MA_CHEQUE.CHEQUE_ID = :CHEQUE_ID;
END;
realizo las pruebas desde EMS Manager 2005.

espero su ayuda pronto.

de ante mano muchas gracias

oscarac 01-04-2011 18:35:23

y como invocas al procedimiento almacenado?

DasGrun 01-04-2011 18:45:31

Gracias por Recibir, por medio de INPUT

oscarac 01-04-2011 18:50:29

ok
me referia a que coloques las instrucciones para verificar si estas pasando los 2 parametros (letras y el numero de cheque)

guillotmarc 01-04-2011 19:06:47

Seguramente es solo que no tienes en cuenta las transacciones involucradas.

Tienes que confirmar la transacción que ejecuta el procedimiento almacenado, y después tienes que abrir una nueva transacción para observar su resultado (si ya tenías una transacción abierta, no verás esas modificaciones hasta que no la cierres y la vuelvas a abrir).

Saludos.

DasGrun 01-04-2011 19:21:03

oscarac, si lo estoy pasando correctamente y me dice el mensaje "1 record(s) was(were) updated in MA_CHEQUE" Pero cuando verifico la tabla no esta actualizada desconecto la BD y la conecto y aun asi no esta actualizada;

guillotmarc, si esta confirmada y me funciona correctamente desde una consulta pero cuando utilizo el SP no me actualiza la informacion.


gracias,

Casimiro Noteví 01-04-2011 19:49:57

Cita:

Empezado por guillotmarc (Mensaje 395445)
Seguramente es solo que no tienes en cuenta las transacciones involucradas.
Tienes que confirmar la transacción que ejecuta el procedimiento almacenado, y después tienes que abrir una nueva transacción para observar su resultado (si ya tenías una transacción abierta, no verás esas modificaciones hasta que no la cierres y la vuelvas a abrir).
Saludos.

Voto por eso :)

DasGrun 01-04-2011 23:25:45

Gracias Compas!!!

Como asi--Guillotmarc

crees que me podes ayudar como puedo ver las transacciones involucradas...disculpa la ignarancia soy nuevo en esto!!1


gracias.

Casimiro Noteví 01-04-2011 23:57:40

Cita:

Empezado por DasGrun (Mensaje 395517)
Gracias Compas!!!
Como asi--Guillotmarc
crees que me podes ayudar como puedo ver las transacciones involucradas...disculpa la ignarancia soy nuevo en esto!!1
gracias.

Para eso sería conveniente y necesario que contestaras esto:

Cita:

Empezado por oscarac (Mensaje 395432)
y como invocas al procedimiento almacenado?


DasGrun 02-04-2011 00:14:34

Casi....lo invoco con EXECUTE, a eso se refieren...

!!!lo invoco desde el Sql Manager 2005 for Firebird!!!

saludos!!!

oscarac 02-04-2011 00:19:29

coloca la instruccion de como lo estas invocando...
codigo...

Casimiro Noteví 02-04-2011 00:32:23

Cita:

Empezado por DasGrun (Mensaje 395527)
Casi....lo invoco con EXECUTE, a eso se refieren...
!!!lo invoco desde el Sql Manager 2005 for Firebird!!!
saludos!!!

Cita:

Empezado por oscarac (Mensaje 395528)
coloca la instruccion de como lo estas invocando...
codigo...


¿Entonces no hay código desde delphi?

DasGrun 02-04-2011 01:01:16

No hay Codigo desde el Delphi, primero lo realizo por medio del EMS Manager Sql 2005, y no me actualiza la tabla con el prototipo utilizado.

si seria desde el delphi seria de la siguiente forma:

Cita:

ISP_INSERTAR_CANTLETRAS.Close;
ISP_INSERTAR_CANTLETRAS.Params[0].Value := sChequeID;
ISP_INSERTAR_CANTLETRAS.Params[1].Value := sCantidadCheque;
ISP_INSERTAR_CANTLETRAS.Open;

Casimiro Noteví 02-04-2011 01:32:15

Cita:

Empezado por DasGrun (Mensaje 395535)
No hay Codigo desde el Delphi, primero lo realizo por medio del EMS Manager Sql 2005, y no me actualiza la tabla con el prototipo utilizado.
si seria desde el delphi seria de la siguiente forma:

¿No te actualiza?, ¿qué quiéres decir?, ¿que no hace lo esperado, que hace otra cosa, que sale un error, que no hace nada...?


¿Se supone que haces commit también?

DasGrun 02-04-2011 01:44:03

si hace commit, y me presenta el mensaje "Executed OK, 0 rows affected (47 ms)
1 record(s) was(were) updated in MA_CHEQUE"
pero cuando verifico en la tabla los cambios que se supone no esta lo esperado. mas sin embargo si lo ejecuto con una consulta por medio de query builder Lo Hace correctamente.

espero que hayan comprendido!!!

Casimiro Noteví 02-04-2011 01:53:24

Pues como no pongas el código exacto que usas... difícil será ayudarte.
Porque lo de que usas execute no nos sirve para nada, lo único que haces entonces es crear el procedimiento.
Así que falta información que no nos has dado... ;)

DasGrun 02-04-2011 02:07:05

el problema es el Procedimiento Almacenado no hay necesidad de invocarlo desde el Delphi, si se hace desde el delphi presentara el mismo resultado oh No.

esto esta raro porque si me presenta el mensaje de que los datos esta actualizado correctamente debe de dar los cambios en el resultado y este no lo presenta.

me imagino yo que con el codigo del create procedimiento me pueden ayudar?

Gracias.

Casimiro Noteví 02-04-2011 15:39:01

Te vuelvo a repetir lo mismo, escribe aquí exactamente qué estás haciendo, no somos adivinos ;)

DasGrun 02-04-2011 16:55:55

OK..

Lo que quiero Hacer es crear un Procedimiento Almacenado que inserte un campo a un registro (cantidad_letras) y que tome como referencia al compo primario(chke_id)?

luego en el Delphi le dare los parametros?

Saludos.

Casimiro Noteví 02-04-2011 17:10:28

De verdad que no se entiende EXACTAMENTE qué estás haciendo, ni cómo... ni cómo lo quieres hacer. Ni has puesto ningún código.

Explícate largo y tendido con todo detalle, que no cobramos ;)


La franja horaria es GMT +2. Ahora son las 10:59:35.

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