Buenos días a todos. Retomando los aportes de todos ya saber que es mala idea hacer commit por registro.
Yo tengo una duda, y si tengo por ejemplo un millon de registros que retorna el cursor, al cual se le hace un procesamiento y el último registro del cursor genera una exception se pierde todo el procesamiento anterior? o lo que propone alvaro es lo que se debe hacer para esos casos?. Como hacer para procesar un pool de registros y al terminar el cursor y se hace commit, guardar los registros procesados exitosamente y los que no que guarde un error pero que siempre termine de recorrer todo el cursor. Gracias por sus aportes. El 20 de septiembre de 2012 09:50, Edwin Quijada <listas_quij...@hotmail.com > escribió: > EL problema es que la base de datos maneja SQL no procesamiento. Esa > forma de hacer las cosas es mala idea. Si quieres hacer una prueba algo > simple. > Ejecuta un ciclo de 1000 records y muevete en el haciendo cualquier cosa y > haz ese mismo ciclo en un lenguaje como php, perl o lo que mas te guste , > entonces veras la diferecia > > Como diria Alvaro, esta optimizada para sentencias declarativas, es decir, > SQL > > ------------------------------ > Date: Wed, 19 Sep 2012 22:36:33 +0100 > From: faster...@yahoo.es > Subject: Re: [pgsql-es-ayuda] RE: [pgsql-es-ayuda] Ayuda Manejo de > transacciones en una función. > To: listas_quij...@hotmail.com; jorgeenriq...@gmail.com; > ec...@postgresql.org; pgsql-es-ayuda@postgresql.org > > Es raro lo que dices que será eterno, si se supone que esa capa de > procesamiento pesado de datos la debe manejar la BD y no una capa de > persistencia en el medio. > > > ------------------------------ > *De:* Edwin Quijada <listas_quij...@hotmail.com> > *Para:* jorgeenriq...@gmail.com; ec...@postgresql.org; " > pgsql-es-ayuda@postgresql.org" <pgsql-es-ayuda@postgresql.org> > *Enviado:* Miércoles 19 de septiembre de 2012 13:02 > *Asunto:* [pgsql-es-ayuda] RE: [pgsql-es-ayuda] Ayuda Manejo de > transacciones en una función. > > 1- No se puede porque una funcion en si misma ya es una transaccion, es > decir, que si la abortas se abortaran los 80000 > 2- No hay que hacer commit por 1 > 3- Para lo que deseas tendras que usar al scripting languaje, asi envias > cada record con su respectivo commit y obtendrias lo que deseas > 4- Hacer un ciclo de 80000 records en una funcion es MUY MALA IDEA ese > proceso tardara horas,depende lo que haga, para procesar esos 80M records. > Lo que te sugiero es que uses perl, php o lo que mas te guste para hacer > ese trabajo y no dentro de la BD porque,aparte de que no se puede como > quieres, sera eterno. > > > ------------------------------ > From: jorgeenriq...@gmail.com > Date: Wed, 19 Sep 2012 10:18:18 -0500 > Subject: [pgsql-es-ayuda] Ayuda Manejo de transacciones en una función. > To: ec...@postgresql.org; pgsql-es-ayuda@postgresql.org > > Hola Grupo Buenos Días, > > Tengo una función que realiza cálculos a unos 80 mil registros los > registros los recorro en un cursor y se hace calculo registro por registro > y quiero que no se haga commit al final de todo el procesamiento si no que > se haga commit por cada registro procesado y saber si se proceso o > hubo algún error. como puedo hacer eso?? de antemano gracias por la ayuda > que me puedan dar. > > > Att. > Jorge Garcia > > > -- Cordialmente. William Diaz Pabón Cel: 3157397356 Bogotá - Colombia -- Solo para Mujeres: http://www.lineadebelleza.com/