quando eu executo o comando "SET search_path TO nome_schema" dentro de
uma funcao, em uma mesma sessao, o SGDB nao altera o search_path nos
comandos executados apos o primeiro, me parece que o schema fica em um
tipo de cache.

Duvida: Existe alguma forma de contornar isso?

Sei que posso usar o comando "Execute" passando o schema em uma
variavel, mas gostaria de evitar fazer comandos sql concatenando Strings.

Você parece ter misturado as coisas.
Uma vez feito um SET, isso vai valer até o final da sessão.
Se chamado dentro de uma transação, será desfeito por um rollback.

Por outro lado, dentro de um execute, o search_path da sessão não é utilizado.

Só se usa execute quando você precisa de SQL dinâmico, ou seja, a consulta e nomes de tabelas e colunas são variáveis. Verifique se sua função realmente precisa de execute, se quiser passe o código aqui pra gente ver e te ajudar melhor. Todavia, você pode passar o search_path dentro do execute, colocar um ponto-e-vírgula e sua consulta logo após.

[]s
Flavio Gurgel
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a