Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Raphael de Souza_57221

Problema em função quote_literal - PostgreSQL

Recommended Posts

Olá pessoal,

 

Estou escrevendo uma função para retornar um texto de consulta. A ideia é fazer um loop em uma consulta e mediante resultados formar a próxima consulta.

 

No entanto, estou lidando com um erro estranho que não estou conseguindo resolver. Segue o código e abaixo a explicação do erro.

 

 

CREATE OR REPLACE FUNCTION funcao()
RETURNS text AS '
DECLARE
aluno record;
text_output text := ''select * from table where id in ('';
aux text := '''';
BEGIN
FOR aluno IN select id_pedido from loja_pedido where id_pedido in ( select id_pedido from loja_itens_pedido where id_produto in (88,89) )
LOOP
aux := quote_literal(''PED_'' || aluno.id_pedido::text);
text_output := text_output || '', '' || aux;
END LOOP;
RETURN text_output;
END;'
language 'plpgsql';
OBS: O código está nessa sintaxe, pois o BD é antigo.
Utilizo a função quote_literal para que o resultado seja algo como 'PED_6162'. Mas, ao utilizar a função o resultado é uma string vazia. Se eu retiro a função quote_literal, ele me retorna o select perfeitamente, mas sem os quotes.
Alguma ideia do que pode estar ocorrendo?
Grato por qualquer ajuda,
Abraços,

Compartilhar este post


Link para o post
Compartilhar em outros sites

quote_literal(string text) text Return the given string suitably quoted to be used as a string literal in an SQL statement string. Embedded single-quotes and backslashes are properly doubled. Note that quote_literal returns null on null input; if the argument might be null, quote_nullable is often more suitable. See also Example 38-1. quote_literal('O\'Reilly') 'O''Reilly'

 

Fonte

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.