E como eu poderia controlar isso ?

Eu vi que tem um exception eu preciso tratar incluir um grupo de 
registro de uma vez ou commitar ou dar um roolback .

junior Prado escreveu:
> Silfar,
>
> "
>
> Stored procedures são funções ou procedimentos que ficam guardados 
> dentro do servidor de banco de dados e que ficam responsáveis pela 
> aplicação de algoritmos, seja na transformação de um dado para geração 
> de informação, na validação de entrada de dados ou até mesmo para 
> execução de processos que de outra forma ficariam à cargo de outro 
> ambiente de aplicação, em outra linguagem de programação.
> Para se escrever uma sp em qualquer linguagem suportada pelo 
> PostgreSQL devemos primeiro instalar a linguagem no servidor. Este 
> procedimento pode ser realizado através da aplicação createlang que 
> acompanha o servidor ou através da instrução "create language plpgsql;".
> Um linguagem instalada pode ser do tipo trusted(cuja reflexo das ações 
> fica restrito ao domínio do servidor SGDB) e untrusted(situação em que 
> a linguagem consegue interagir com outros serviços além do SGDB como 
> e-mail e também o filesystem).
>
> Escrevendo a primeira Stored Procedure:
>
> 1. *create function helloworld() returns varchar as
> *2.* $$
> *3.* begin
> *4.* return 'Hello World!';
> *5.* end
> *6.* $$ language 'plpgsql';
> *
> A primeira linha temos a instrução que indica que esta é uma função 
> chamada *helloworld* que retorna uma única informação do tipo *varchar*.
> A ultima palavra da primeira linha é "*as*" e indica o início do 
> conteúdo da sp.
> Na linha 2 temos o delimitador de conteúdo *$$*, Ele deve ser usado 
> para "conter" todas as instruções da sp.
> O uso desse limitador facilita a escrita do conteúdo da função em 
> muito. *Antigamente era utilizada a aspa simples* e devido a isso toda 
> vez que se tinha uma aspa simples dentro do código ela acabava sendo 
> duplicada. Eram tempos mais difíceis onde com certeza se você não 
> tivesse familiaridade com as aspas, voce não conseguia escrever uma 
> função dinâmica.
> O *begin* inicia as instruções da sp.
> Quando todos nós que estamos acostumados com SQL vemos uma instrução 
> begin, automaticamente pensamos em uma transação, porém, neste caso 
> essa instrução indica somente o início de um bloco de código.
> Muitas pessoas esclarecem que uma stored procedure não consegue 
> trabalhar com transações encadeadas dizendo que ela tem somente uma 
> transação, ou melhor, que ela é uma única transação e isto esta correto.
> Esse fato ocorre por que para facilitar a gerência de recursos e 
> destinados internamente à sp como estruturas de controle de processo, 
> estado da execução das sql e outros ele foi restrito a somente *uma 
> transação* e também por que esse modelo de implementação melhora a 
> performance da execução de uma stored procedure. Se olharmos o código 
> da implementação da plpgsql, por exemplo em *pl_exec.c*(41) veremos 
> que o autor informa que através desse modelo ele consegue preparar as 
> instruções e mante-las preparadas para caso de repetição de seu uso, 
> aumentando assim a performance.
> Esse é um dos motivos. Mais para a frente veremos como trabalhar com 
> sp's de forma que ela possam ter controle dos processos e "simular" 
> transações.
> O *return* devolve o valor para a função, encerrando o processo.
> A instrução *end* da linha 5 finaliza o bloco de código da função e na 
> linha 6 temos a instrução que informa para o postgreSQL qual *parser* 
> deve ser utilizado para rodar a função. Isso implica também que se a 
> linguagem tiver um *validator* o conteúdo da função sera verificado no 
> momento de sua gravação.
> Antigamente só tinhamos essa operação no momento em que executávamos a sp.
>
> "
>
> -- 
> Valter Cezar Prado Junior
> Analista TI
>
> Sem saber como fazer ele fez!
> ------------------------------------------------------------------------
>
> _______________________________________________
> 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

Responder a