2008/10/29, tetraetila(R) <[EMAIL PROTECTED]>:
>
> Minha função abaixo está me retornando o seguinte erro:
>
> ERROR:  record "myrec" has no field "id"
> CONTEXT:  PL/pgSQL function "whichrowslocked" line 10 at assignment
>
> ********** Erro **********
>
> ERROR: record "myrec" has no field "id"
> SQL state: 42703
> Contexto: PL/pgSQL function "whichrowslocked" line 10 at assignment
>
>
> Eu a utilizo passando a tabela e a coluna - select whichrowslocked(
> 'a003.a003015_tbl, 'sql_recno' )
>
> E me retorna o erro descrito acima, se puderem me dar uma luz agradeço.
>
> Obrigado
>
> Adilson Nunes
>
>
>
> --------------------------------------------------------------------------------
>
> -- Function: a003.whichrowslocked(text, text)
>
> -- DROP FUNCTION a003.whichrowslocked(text, text);
>
> CREATE OR REPLACE FUNCTION a003.whichrowslocked(text, text)
>   RETURNS SETOF text AS
> $BODY$
> DECLARE
>  sql_recno RECORD;
>  myst TEXT;
>  innermyst TEXT;
> BEGIN
>  myst = 'SELECT '||$2||' FROM '||$1;
>  innermyst = 'SELECT '||$2||' AS id FROM '
>  ||$1||' WHERE '||$2||'=';
>  FOR sql_recno IN EXECUTE myst LOOP
>  myst = innermyst||sql_recno.id||' FOR UPDATE NOWAIT';
>  BEGIN
>  EXECUTE myst;
>  EXCEPTION WHEN lock_not_available THEN
>  RETURN NEXT sql_recno.id;
>  END;
>  END LOOP;
>  RETURN;
> END;
>
>
> $BODY$
>   LANGUAGE 'plpgsql' VOLATILE STRICT
>   COST 100
>   ROWS 1000;
> ALTER FUNCTION a003.whichrowslocked(text, text) OWNER TO adilson;
>
> --------------------------------------------------------------------------------
>


Me parece estar havendo um problema com referência a "sql_recno".
Ora ele é sua tabela ora a variável do comando FOR.
Talvez o PostgreSQL não esteja conseguindo interpretar corretamente o
que você deseja.

Osvaldo
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a