Em 12-09-2013 14:53, Rafael Fialho Corrêa escreveu:
Acredito que não exista limitação nos parâmetros, visto que a "pg_proc"
armazena somente os tipos dos parâmetros, e não seu limite.
Talvez precise fazer as exceções no próprio código da função mesmo..
Sua resposta está perfeita. Ajudaria muito se estivesse lá embaixo pra
continuação dos demais colegas. Então, quem estiver lendo isso, role por
favor...
Em 12 de setembro de 2013 14:33, Rogério Grando
<[email protected] <mailto:[email protected]>> escreveu:
Olá pessoal, boa tarde a todos!
Estava fazendo alguns testes e notei um comportamento estranho.
Quando crio uma função e limito o parâmetro de entrada, esta
limitação não funciona.
Crio uma função que recebe varchar(11), mas se eu passar um varchar
de 12 ou mais ele asseita, a mesma coisa para numeric.
Isso pode provocar uma fala indesejada no sistema. Agora terei que
validar isso na função.
Acho que seria interessante não permitir esta situação.
Testes em PostgreSQL versões 8.5.20 e 9.2 em Windows.
CREATE OR REPLACE FUNCTION sp_teste(nvarchar varchar(11))
RETURNS character varying AS
$BODY$
DECLARE
BEGIN
RETURN nvarchar;
END; $BODY$
LANGUAGE plpgsql VOLATILE;
SELECT sp_teste('12345678910111213');
CREATE OR REPLACE FUNCTION sp_teste2(nnumeric numeric(5,2))
RETURNS numeric AS
$BODY$
DECLARE
BEGIN
RETURN nnumeric;
END; $BODY$
LANGUAGE plpgsql VOLATILE;
SELECT * FROM sp_teste2(145214.52234);
Abraço a todos.
O comportamento está correto.
Além da outra resposta láááá em cima no top-posting do outro colega,
veja a página do manual explicando o comportamento dos data types em
funções:
http://www.postgresql.org/docs/9.3/static/typeconv-func.html
Sim, sanitize qualquer argumento no código da função, se realmente precisar.
[]s
__________________________________
Flavio Henrique A. Gurgel
Líder de Projetos Especiais
Consultoria, Projetos & Treinamentos 4LINUX
Tel1: +55-11.2125-4747 ou 2125-4748
www.4linux.com.br
email: [email protected]
______________________________
FREE SOFTWARE SOLUTIONS
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral