![]() |
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
Ahora este es el procedimiento almacenado que he creado y no actualiza los datos. realizo las pruebas desde EMS Manager 2005. espero su ayuda pronto. de ante mano muchas gracias |
y como invocas al procedimiento almacenado?
|
Gracias por Recibir, por medio de INPUT
|
ok
me referia a que coloques las instrucciones para verificar si estas pasando los 2 parametros (letras y el numero de cheque) |
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. |
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, |
Cita:
|
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. |
Cita:
Cita:
|
Casi....lo invoco con EXECUTE, a eso se refieren...
!!!lo invoco desde el Sql Manager 2005 for Firebird!!! saludos!!! |
coloca la instruccion de como lo estas invocando...
codigo... |
Cita:
Cita:
¿Entonces no hay código desde delphi? |
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:
|
Cita:
¿Se supone que haces commit también? |
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!!! |
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... ;) |
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. |
Te vuelvo a repetir lo mismo, escribe aquí exactamente qué estás haciendo, no somos adivinos ;)
|
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. |
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 ;) |
Ok Gracias Casimiro por tu paciencia!!!!!
Luego le explico todo la aplicación... Se creo una aplicación de creación de cheques donde use ATexto que me sirve para convertir de Numeros a Letras por ejemplo se digita un campo en Numero(2,354.40) y este lo convierte a otro en Letras(dos mil tresciento y cicuenta cuatro con 40/100) donde el campo de numero se almaceno en un campo de la tabla y el campo letras se almaceno como campo calculado utilizado en delphi. Ahora lo que quiero hacer es almacenar este campo letras(DBEDIT) a un campo de la tabla(Cant_Letras). lo he estado pensado hacer por medio de un Procedimiento Almacenado que es tema del que estamos hablando. este SP lo unico que hara es cargar parametros(Numero(2354.40) y el DBEDIT(dos mil tresciento cicuenta y cuatro con 40/100) campo calculado desde delphi. este es el SP.
Mi Logica esta Bien, pero este Sp no esta funcionando, no esta dando los resultados. como guardaria un campo calculado a un campo de la tabla usando DBEDIT? Gracias por ayuda- |
Cita:
Además que "no está funcionando" ¿qué quiere decir?, lo pregunté antes. En fin, la cosa es simple, se supone entonces que desde tu programa delphi llamas al procedimiento almacenado para crear el registro, bueno, por lo que veo no es así, no lo creas, lo que haces es actualizarlo, así que si no existe... entonces no hace nada!!!.
Si el valor que pasas al parámetro :cheque_id no existe entonces no tiene ningún registro que actualizar, ni tampoco creará ningún registro, evidentemente. De esto entonces surgen varias preguntas más, principalmente: ¿qué quiéres hacer, actualizar o crear?, dices que quieres crear, pero "update" no es crear, deberías usar "insert" no "update", otras preguntas que se me ocurren no vale la pena ni que las exponga aquí porque estaría volviendo a lo que comenté antes, a recurrir a técnicas adivinatorias de lo que quieres hacer ;) |
Cheque_id existe Casimiro!!!
R: quiero actualizar. gracias. |
Amigo, vuelvo a recordarte que la bola de cristal no funciona, que tampoco somos adivinos, así que pon el código completo de todo lo que haces.
|
Solo por curiosidad
Ejecutas el Sp algo como asi Execute procedure SP_INSERTAR_CANTLETRAS('Tres mil',12) luego haces algo asi commit; Claro esto es de la consola de tu manejador de base de datos EMS Select * from MA_CHEQUE WHERE MA_CHEQUE.CHEQUE_ID = :CHEQUE_ID; De seguro veras los cambios echos :) |
Bueno Amigo aqui he creado un Video del Problema que tengo del SP, espero que comprendan el Probema. y de ante mano muchas gracias por su ayuda.
espero que hayan entendido....si no... se hace otro video con mas tiempo...jajajaja soy inexplicable!!!1 |
El problema es lo que ya hemos comentado antes, no haces commit, debes confirmar los cambios.
![]() El motivo de que veas el cambio la primera vez es porque ese programa que estás usando mantendrá una caché o algo y cuando desconectas y conectas realmente no estará haciéndolo, pero seguro que si en lugar de eso cierras el programa y lo vuelves a abrir tampoco verás los cambios. Así que ya sabes, confirmar cambios, commit. |
GRACIAS A TODOS, ahora tengo que programarlo desde el Delphi, ahi les cuento como me va..
GRACIAS. |
| La franja horaria es GMT +2. Ahora son las 14:26:55. |
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