Segue abaixo uma de funções de inserção que eu tenho. Após concluir
todas estive reanalisando a lógica empregado para o retorno.
Se meu raciocínio estiver correto a função abaixo só retornaria algum
valor caso a mesma conseguisse concluir com sucesso a inserção ou caso
caia em alguma das exceções tratadas.
Porém, caso o erro fosso algum que não esteja na lista de exceções
tratadas a função não retornaria nada. Como eu faço para garantir que
NULL seja retornado, caso a função não consiga inserir por qualquer
motivo que seja.
Eu escolhi tratar essas três exceções pois elas são mais comumente
ocasionadas pelo próprio usuário. Segue abaixo a função em questão.
*CREATE OR REPLACE FUNCTION "funcInsertAudios" ( f_nome varchar(20))**
** RETURNS smallint**
** LANGUAGE plpgsql**
** VOLATILE **
** COST 100**
** AS $$**
**
**DECLARE audio smallint;**
**
**BEGIN**
**
** INSERT INTO "Audios"(nome_audios) VALUES(f_nome) RETURNING
id_audios INTO audio;**
**
** RETURN audio;**
**
**
** EXCEPTION**
**
** WHEN UNIQUE_VIOLATION THEN**
** RAISE NOTICE 'Uma ou mais chaves únicas foram violadas ao
tentar inserir Audio';**
** RETURN NULL;**
** WHEN NOT_NULL_VIOLATION THEN**
** RAISE NOTICE 'Um ou mais campos obrigatórios estão em
branco ao tentar inserir Audio';**
** RETURN NULL;**
** WHEN INTEGRITY_CONSTRAINT_VIOLATION THEN**
** RAISE NOTICE 'Uma ou mais constraints foram violadas ao
tentar inserir Audio';**
** RETURN NULL;**
**END;**
**$$;*
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral