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 <matioli.math...@gmail.com>

>
> 2012/5/19 Matheus de Oliveira <matioli.math...@gmail.com>
>
>> 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
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
Anselmo M. Silva
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a