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

Responder a