![]() |
Como se si el Update se llevo a cabo
Que tal...un saludo.
Pues eso.Utilizo Delphi 7, Oracle 9. Dentro de un SP llevo a cabo una sentencia UPDATE sobre X tabla, la cual no se esta llevando a cabo -la actualizacion-. Como puedo saber si mi sentencia Update se ha realizado exitosamente. Cabe mencionar que lo hago dentro de un Query Dinamico -creo que asi se llama- y verifico, si es que se llevo a cabo el update con un Sql%RowCount, pero al parecer no funciona o no aplica para el Execute Immediate.Ej.
Agradeceria algun comentario o tip. Saludos, cacuna. |
commit;
Lamentablemente no puedo decirte, como obtener el número de registros modificados,
pero ahi te va un tip: cuando uses EXECUTE INMEDIATE debes de hacer un COMMIT explicito. es decir: EXECUTE INMEDIATE <sSentencia> COMMIT; Siempre y cuando sSentencia sea, INSERT, UPDATE, DELETE. te envio un link en ingles, donde viene otra forma de ejecutar sentencias dinámicas, en la cual, te devuelve el número de filas afectadas. http://www.psoug.org/reference/dbms_sql.html |
Yo hago el Commit desde Delphi
Gracias por tu ayuda, pero el COMMIT lo hago desde DELPHI y no en el SP, solo en este caso.
Igualmenmte gracias. Nota: Me gusto el refran. |
hola cacuna
prueba a hacerlo, con la forma como lo planeta el link.... si fucniona, prque tengo varios procedimientos que te devuelven el número de registros afectado, está casi al final de la página mencionada arriba |
Hola:
Toda transacción Oracle devuelve el SQLCODE, -1 cuando hay problemas y 0 cuando la operación es exitosa, verifica que los componentes que estás trabajando tiene la propiedad SQLCODE. Hasta Luego - |
Hola, lucas, esto suena inetresante, y directamente desde ORACLE como se aplica....
para el caso de nuestro compañero cacuna, le inetresa saber las filas afectadas... que creoq eu no es el caso.... sin quitarnos del tema del hilo que se planteo, nos podrias poner un ejemplo del SQL_CODE, que a mi me vendría muy bien Gracias. Saludos desde Guadalajara. |
Me sirve lo del SQLCODE..pero como se aplica
Gracias por sus respuestas.
Como menciona anteriormente, el COMMIT lo hago desde DELPHI pero si revisan el codigo que inserte, la verificacion de si actualizo N registros o no, la hago desde un SP en la BD de Oracle, para asi lanzar una Excepcion-desde el SP-. Realmente no me interesa cuantos registros se actualizaron, mas bien, si la actualizacion se llevo a cabo o no. De igual manera aqui no intervienen que componentes que utilizo -ODAC- por que todo es dentro del SP. Creo que la solucion va por el SQLCODE que menciona Lucas, pero...como se usa? Mil Gracias de nuevo. |
Hola amigos:
Lamentablemente no trabajo con Delphi - Oracle, pero daré un ejemplo de PowerBuilder, que es el otro ambiente de desarrollo que manejo: Para saber si una operación tuvo éxito yo aplico: Código:
if SQLCA.SQLCODE = 0 then Bueno espero que haya servido de guía, básicamente es tomar las variables propias que tiene Oracle ó un determinado motor de base de datos para capturarlo desde un lenguaje de programación, ah !!! casi lo olvidé, en el procedimiento almacenado debe existir una handle exceptión (manejador de excepción) con el fin de levantar dicho error, en caso contrario el error puede pasar totalmente desapercibido ante nuestros ojos :rolleyes: (por lo menos en PowerBuilder me sucede esto) Hasta la próxima.....:eek: |
Hola:
¿Necesitas lanzar la sentencia dinamicamente o vas a actualizar la misma tabla siempre? Saludos |
La franja horaria es GMT +2. Ahora son las 23:00:56. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi