Re: [pgbr-geral] Transações em funções

2016-05-13 Por tôpico Silfar Goulart
Pessoal ainda com problema na transação.

Eu preciso fazer um processo em lote, mas queria efetivar a alteração em
pequenos pedaços, mas nada do que tentei funcionou, se alguém tiver
disponibilidade para uma ajuda, ficaria muito grato.



Enviado com MailTrack


Silfar Goulart

Em 11 de maio de 2016 09:53, Silfar Goulart  escreveu:

> Euler, eu também pensei nisso. Tipo criar um vetor e ir acumulando as
> linhas de uma transação, depois passar esse vetor para uma outra função e
> nela sim processar, mas empaquei na falta de conhecimento.
>
> Eu sei criar um vetor, sei colocar os componentes nele, mas não sei como
> recria-lo , isto zerar o vetor para receber uma nova transação.
>
> Vc tem skype ou hangout, se vc tiver um tempo gostaria de conversar um
> pouco, talvez mostrar melhor.
>
> skype: silfar.castro
>
>
>
> Enviado com MailTrack
> 
>
> Silfar Goulart
>
> Em 10 de maio de 2016 19:36, Euler Taveira 
> escreveu:
>
>> On 10-05-2016 18:51, Silfar Goulart wrote:
>> > Fazer isso num aplicativo, é possível, mas a importação se torna lenta,
>> > por isso eu fiz uma rotina apenas para importar o arquivo numa tabela
>> > temporária, com um campo para armazenar a linha, e fiz uma rotina no
>> > pgpsql para ler estes registros e num for processar as transações.
>> >
>> Você não mencionou número de linhas, portanto, fica difícil avaliar se é
>> lento. Contudo, pelo que você explicou acho que dá para ir acumulando os
>> comandos até o fim de uma "transação" e depois executá-los um a um
>> adicionando um bloco EXCEPTION (isso não deve ser tão rápido assim).
>> Estou muito cansado para fazer um exemplo ...
>>
>>
>> PS> evite top posting.
>>
>>
>> --
>>Euler Taveira   Timbira - http://www.timbira.com.br/
>>PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
>> ___
>> pgbr-geral mailing list
>> pgbr-geral@listas.postgresql.org.br
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Transações em funções

2016-05-11 Por tôpico Silfar Goulart
Euler, eu também pensei nisso. Tipo criar um vetor e ir acumulando as
linhas de uma transação, depois passar esse vetor para uma outra função e
nela sim processar, mas empaquei na falta de conhecimento.

Eu sei criar um vetor, sei colocar os componentes nele, mas não sei como
recria-lo , isto zerar o vetor para receber uma nova transação.

Vc tem skype ou hangout, se vc tiver um tempo gostaria de conversar um
pouco, talvez mostrar melhor.

skype: silfar.castro



Enviado com MailTrack


Silfar Goulart

Em 10 de maio de 2016 19:36, Euler Taveira  escreveu:

> On 10-05-2016 18:51, Silfar Goulart wrote:
> > Fazer isso num aplicativo, é possível, mas a importação se torna lenta,
> > por isso eu fiz uma rotina apenas para importar o arquivo numa tabela
> > temporária, com um campo para armazenar a linha, e fiz uma rotina no
> > pgpsql para ler estes registros e num for processar as transações.
> >
> Você não mencionou número de linhas, portanto, fica difícil avaliar se é
> lento. Contudo, pelo que você explicou acho que dá para ir acumulando os
> comandos até o fim de uma "transação" e depois executá-los um a um
> adicionando um bloco EXCEPTION (isso não deve ser tão rápido assim).
> Estou muito cansado para fazer um exemplo ...
>
>
> PS> evite top posting.
>
>
> --
>Euler Taveira   Timbira - http://www.timbira.com.br/
>PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Transações em funções

2016-05-10 Por tôpico Euler Taveira
On 10-05-2016 18:51, Silfar Goulart wrote:
> Fazer isso num aplicativo, é possível, mas a importação se torna lenta,
> por isso eu fiz uma rotina apenas para importar o arquivo numa tabela
> temporária, com um campo para armazenar a linha, e fiz uma rotina no
> pgpsql para ler estes registros e num for processar as transações.
> 
Você não mencionou número de linhas, portanto, fica difícil avaliar se é
lento. Contudo, pelo que você explicou acho que dá para ir acumulando os
comandos até o fim de uma "transação" e depois executá-los um a um
adicionando um bloco EXCEPTION (isso não deve ser tão rápido assim).
Estou muito cansado para fazer um exemplo ...


PS> evite top posting.


-- 
   Euler Taveira   Timbira - http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Transações em funções

2016-05-10 Por tôpico Silfar Goulart
Deixa eu tentar explicar melhor.
Eu preciso importar registros de arquivos txt, o problema é que o arquivo
não tem delimitadores, ele tem um layout de definição de campo por tamanho,
e para piorar existem registros de várias tabelas no mesmo arquivo. Por
exemplo :

0TIT0 - essa linha indica que é o começo de uma transação para a tabela de
titular e seus xomplementos
1TIT1 - registro de tabela de titulares
1TIT2 - registro de tabela de documento de titulares
1TIT3 - registro de tabela de dependente de titular
1TIT3 - Outro registro de dependente.
9TIT0 - Este registro indica o fim desse grupo de registro de titular

O número na posição 1 indica :
1 abertura de transação
2 fechamento de transação

Então tenho que ter esse controle, ou grava a transação toda ou não grava
nada dela.

Nesse arquivo tem pelo menos 5 tipo de grupo de registro, cada um com pelo
menos 2 registro de tabelas diferentes.

Fazer isso num aplicativo, é possível, mas a importação se torna lenta, por
isso eu fiz uma rotina apenas para importar o arquivo numa tabela
temporária, com um campo para armazenar a linha, e fiz uma rotina no pgpsql
para ler estes registros e num for processar as transações.

Ficou mais claro?
Em 10/05/2016 6:30 PM, "Euler Taveira"  escreveu:

On 10-05-2016 18:13, Silfar Goulart wrote:
> Então não tenho como resolver isso.
>
Com SQL e a sua linguagem de programação. Sem saber detalhes sobre o que
faz "processa" fica difícil avaliar se há algum impedimento de fazer
como estou sugerindo.


PS> evite top posting. Bagunça o histórico da lista.


--
   Euler Taveira   Timbira - http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Transações em funções

2016-05-10 Por tôpico Euler Taveira
On 10-05-2016 18:13, Silfar Goulart wrote:
> Então não tenho como resolver isso.
> 
Com SQL e a sua linguagem de programação. Sem saber detalhes sobre o que
faz "processa" fica difícil avaliar se há algum impedimento de fazer
como estou sugerindo.


PS> evite top posting. Bagunça o histórico da lista.


-- 
   Euler Taveira   Timbira - http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Transações em funções

2016-05-10 Por tôpico Silfar Goulart
Então não tenho como resolver isso.
Em 10/05/2016 5:36 PM, "Euler Taveira"  escreveu:

> On 10-05-2016 16:39, Silfar Goulart wrote:
> > Euler, mas a ideia é essa mesmo, o problema é são muitas iterações, é
> > como se fosse uma tabela cheia de linhas, cada linha faz parte de uma
> > transação,
> >
> Repetindo: funções *não* suportam transações.
>
> > por exemplo:
> >
> > linhainiciodatarndazacao
> > linhadados
> > linhadados
> > fimdatransação
> >
> > isso se repete várias vezes dentro do cursor.
> >
> > o que ue preciso é
> >
> > iniciatrans
> >processa
> >processa
> > commit
> > exception
> >  rollback
> >
> Se "processa" emitir um erro você já tem o ROLLBACK e não precisa do
> "exception".
>
>
> --
>Euler Taveira   Timbira - http://www.timbira.com.br/
>PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Transações em funções

2016-05-10 Por tôpico Euler Taveira
On 10-05-2016 16:39, Silfar Goulart wrote:
> Euler, mas a ideia é essa mesmo, o problema é são muitas iterações, é
> como se fosse uma tabela cheia de linhas, cada linha faz parte de uma
> transação,
> 
Repetindo: funções *não* suportam transações.

> por exemplo:
> 
> linhainiciodatarndazacao
> linhadados
> linhadados
> fimdatransação
> 
> isso se repete várias vezes dentro do cursor.
> 
> o que ue preciso é
> 
> iniciatrans
>processa
>processa
> commit
> exception
>  rollback
> 
Se "processa" emitir um erro você já tem o ROLLBACK e não precisa do
"exception".


-- 
   Euler Taveira   Timbira - http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Transações em funções

2016-05-10 Por tôpico Silfar Goulart
Euler, mas a ideia é essa mesmo, o problema é são muitas iterações, é como
se fosse uma tabela cheia de linhas, cada linha faz parte de uma transação,

por exemplo:

linhainiciodatarndazacao
linhadados
linhadados
fimdatransação

isso se repete várias vezes dentro do cursor.

o que ue preciso é

iniciatrans
   processa
   processa
commit
exception
 rollback





Enviado com MailTrack


Silfar Goulart

Em 10 de maio de 2016 16:20, Euler Taveira  escreveu:

> On 10-05-2016 15:24, Silfar Goulart wrote:
> > Preciso fazer uma função que lê vários registros de uma tabela e
> > processa a informação, mas preciso fazer isso com controle de transação,
> > já tentei de tudo mas nada deu certo, o rollback não funciona de jeito
> > nenhum.
> >
> Funções *não* podem abrir transações explicitamente. Isso quer dizer que
> não se pode usar BEGIN, COMMIT/END, ROLLBACK ou subtransações. Muita
> gente acha que o BEGIN/END da PL/pgSQL é um bloco de transação. *Não* é.
> Na verdade, é só a delimitação do corpo da função.
>
> Pelo corpo da sua função não dá para entender o que quer fazer mas será
> que não dá para usar um cursor para ir iterando linha a linha e fazer
> isso no próprio SQL?
>
>
> --
>Euler Taveira   Timbira - http://www.timbira.com.br/
>PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] Transações em funções

2016-05-10 Por tôpico Euler Taveira
On 10-05-2016 15:24, Silfar Goulart wrote:
> Preciso fazer uma função que lê vários registros de uma tabela e
> processa a informação, mas preciso fazer isso com controle de transação,
> já tentei de tudo mas nada deu certo, o rollback não funciona de jeito
> nenhum.
> 
Funções *não* podem abrir transações explicitamente. Isso quer dizer que
não se pode usar BEGIN, COMMIT/END, ROLLBACK ou subtransações. Muita
gente acha que o BEGIN/END da PL/pgSQL é um bloco de transação. *Não* é.
Na verdade, é só a delimitação do corpo da função.

Pelo corpo da sua função não dá para entender o que quer fazer mas será
que não dá para usar um cursor para ir iterando linha a linha e fazer
isso no próprio SQL?


-- 
   Euler Taveira   Timbira - http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral