Qual versão do PostgreSQL fizeste?
Resultado:
ao criar a função :
AVISO: uso de escape fora do padrão em cadeia de caracteres
LINE 1: SELECT 'SELECT ' || regexp_replace(calculo, '([0-9]+)([^\.0-...
ao executá-la usando: *Calcule ('1/10')*
ERRO: erro de sintaxe em ou próximo a ""
SQL state: 42601
Context: PL/pgSQL function "calcule" line 4 at comando EXECUTE
2012/5/19 Matheus de Oliveira <[email protected]>
>
> 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
>
>
--
Anselmo M. Silva
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral