2009/7/28 Rogério A Bassete <[email protected]>
> Pessoal,
>
> Preciso dentro de uma PROCEDURE em PL/Tcl:
>
> spi_exec "SELECT currval('log.log_id_seq'::regclass)"
>
> Porém se a curval falhar, chamar outra PROCEDURE ao invés de abortar a
> PROCEDURE.
>
> Algo COMO:
>
> try {
> spi_exec "SELECT currval('log.log_id_seq'::regclass)"
> } finally {
> spi_exec "SELECT nextval('log.log_id_seq'::regclass)"
> }
>
> Rogério Bassete
>
>
Rogério,
Só uma pequena brincadeira, mas com plpgsql:
create or replace function mycurrval(text) returns bigint as
$$
declare
sSequenceName alias for $1;
iValue bigint;
begin
if not exists (select 1 from information_schema.sequences where
sequence_name = sSequenceName) then
raise exception 'ERROR: Sequence % does not exists', sSequenceName;
end if;
begin
iValue := currval(sSequenceName);
exception
when others then
iValue := nextval(sSequenceName);
end;
return iValue;
end;
$$ language plpgsql;
postg...@bdteste=# select mycurrval('teste_sequencia_seq');
ERROR: ERROR: Sequence teste_sequencia_seq does not exists
postg...@bdteste=# create sequence teste_sequencia_seq;
CREATE SEQUENCE
postg...@bdteste=# select mycurrval('teste_sequencia_seq');
mycurrval
-----------
1
(1 row)
Cordialmente,
--
Fabrízio de Royes Mello
>> Blog sobre PostgreSQL: http://fabriziomello.blogspot.com
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral