Em 01/11/08, tetraetila(R)<[EMAIL PROTECTED]> escreveu: > ----- Original Message ----- > From: "Osvaldo Kussama" <[EMAIL PROTECTED]> > >> Não deu para entender o que você quer fazer. >> Vejamos: >> - innermyst é uma string que contém o comando SQL que você desja executar. >> - myrec é um record contendo todos os campos resultantes da junção da >> - tabela $1 com a tabela pgrowlocks. >> - você concatena a string com o record (sinceramente não sei qual o >> resultado) e tenta executar? > > Osvaldo > _______________________________________________ > > Nem eu? : - ) > > Caro Osvaldo > > Ela precisa me retornar o resultado como se eu tivesse feito este select: > > select * FROM a003.a003015_tbl as a, pgrowlocks('a003.a003015_tbl') AS p > WHERE p.locked_row = a.ctid order by sr_recno; > > Ao invés dele passo a usar: select colunas( 'a003.a003015_tbl' ); >
Para fazer exatamente oque o SELECT acima faz, mas passando a tabela, teste a função: CREATE OR REPLACE FUNCTION colunas(text) RETURNS SETOF record AS $$ DECLARE myrec RECORD; myst TEXT; BEGIN myst = 'select * FROM ' || $1 || ' as a, pgrowlocks(' || quote_literal($1) || ') AS p WHERE p.locked_row = a.ctid order by sr_recno'; FOR myrec IN EXECUTE myst LOOP RETURN NEXT myrec; END LOOP; RETURN; END; $$ LANGUAGE 'plpgsql' VOLATILE STRICT; Para usar utilize: SELECT * FROM colunas('sua_tabela') AS foo(lista de tipo de campos de sua_tabela + lista de tipo de campos de pg_rowlocks); Osvaldo _______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral