Rudinei Dias escreveu:
>
> Não...
> Eu só quero sabe "se" houve um erro no sql, e não "qual" erro.
>
> Para ser mais didático:
>
>   update tabela set campo='xxxx' where x=5; 
>
>   -- Se houve um erro no SQL, por exemplo de sintaxe por faltar o ID
>   -- gostaria que caísse no exception abaixo.
>   EXCEPTION RAISE EXCEPTION 'erro dml';
>   --Se não der exception, continuo com a lógica do programa
>
>   

Vou te passar um exemplo do PHP tratando as exceptions, aí você adapta 
pra tua situação.

PL:

create function teste_php
declare
(...)
begin

    (...)

 
    -- Ignora erro de chave duplicada  
    begin
       insert into ...
    exception when unique_violation then null
    end

    -- Faz update: em caso de erro, vai dar a exception lá de baixo
    update tabela set campo....      

    return 'OK';

exception when others then
        raise exception 'Erro na function: % % ', SQLSTATE , SQLERRM;
end;


PHP
$res = @pg_query("select * from teste_php()");
$retorno = @pg_fetch_result($res,0,0);
if ($retorno != 'OK')
    die($retorno);


Dá pra você se virar daqui, eu acho.

[]´s, André Volpato

_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a