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