2012/5/19 Matheus de Oliveira <[email protected]>
> Essa função em si não parece ser uma boa prática, mas dá pra usar
> expressão regular pra "tentar" fazer o que você quer.
>
> Exemplo:
>
> CREATE OR REPLACE FUNCTION CALCULE (calculo text)
> RETURNS NUMERIC AS $$
> DECLARE
> v_result numeric;
> BEGIN
> EXECUTE 'SELECT ' || regexp_replace(calculo, '([0-9]+)',
> '\1::numeric', 'g')
> INTO v_result;
> RETURN v_result;
> END;
> $$ LANGUAGE plpgsql;
>
>
> Aviso: código não testado...
>
>
Corrigindo pra aceitar valor decimal:
CREATE OR REPLACE FUNCTION CALCULE (calculo text)
RETURNS NUMERIC AS $$
DECLARE
v_result numeric;
BEGIN
EXECUTE 'SELECT ' || regexp_replace(calculo, '([0-9]+)([^\.0-9])',
'\1::numeric\2', 'g')
INTO v_result;
RETURN v_result;
END;
$$ LANGUAGE plpgsql;
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral