Em 9 de março de 2010 16:08, flavio <[email protected]> escreveu: > > Obrigado Osvaldo e Guedes pelas dicas > > Está acontecendo o seguinte: > Se eu fizer assim: > > > EXECUTE ''select quote_literal( '' || nome_campo || '' ) '' INTO valor_rec; > sendo o valor de nome_campo = 'mov_rec.id_contrato' fica assim... > > EXECUTE select ' mov_rec.id_contrato' INTO valor_rec; > aqui eu recebo o seguinte erro: > > WARNING: Error occurred while executing PL/pgSQL function f_gera_fatura > WARNING: line 550 at execute statement > ERROR: Relation "mov_rec" does not exist > > > Mas se eu faço assim: > EXECUTE ''select '' || quote_literal(nome_campo ) INTO valor_rec; > fica assim... > > EXECUTE select 'mov_rec.id_contrato' INTO valor_rec; > aqui nao recebo erro mas como fazer para ver o valor de valor_rec? > > RAISE NOTICE ''valor_rec: (%)'', valor_rec; > retorna (<NULL>) >
Creio que seu comando esteja incompleto, talvez seja algo do tipo: EXECUTE 'SELECT ' || quote_ident(nome_campo) || ' FROM ' || quote_ident(sua_tabela) || ' WHERE ' || quote_ident (seu_campo) || ' = ' || quote_literal(valor) INTO valor_rec; repare que é EXECUTE 'string com o comando a ser executado' INTO valor_rec; Veja http://www.postgresql.org/docs/current/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN Caso esteja enfrentando dificuldades com os caracteres delimitadores ' veja 4.1.2.4. Dollar-Quoted String Constants em: http://www.postgresql.org/docs/current/interactive/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS Osvaldo _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
