Retornar o sequêncial via Identity no Interbase

Firebird

02/07/2003

Qual a rotina para retornar o sequêncial via Identity no Interbase.
Tenho a seguinte rotina. Funciona?
Function
begin
try
with query do
begin
sql.clear;
sql.add(´VALUES IDENTITY_VAL_LOCAL()´);
open;
Result := Fields[0].AsInteger;
Close;
If (Result = -1) then
raise Exception.Create(´Não foi possível recuperar o sequêncial gerado!´);
end; // with
except
raise;
end;//try
end;


Oziasl

Oziasl

Curtidas 0

Respostas

Afarias

Afarias

02/07/2003

Bom, antes de tudo aconselho sempre que se leia um pouco sobre qualquer coisa q vá iniciar a utilizar -- no caso do IB/FB na página do ClubeDelphi existem várias apostilas...

No IB não existe tal comando:: ´VALUES IDENTITY_VAL_LOCAL()´

Para gerar um sequencial, faz-se uso de GENERATORS, da forma:

para criar o generator:

CREATE GENERATOR nome_generator;


Para usá-lo (como no seu exemplo):

Function Txxx.NovoSequencial: Integer;
begin
with query do
try
// Transaction.StartTransaction;
SQL.Text := ´SELECT GEN_ID(nome_generator, 1) FROM RDB$DATABASE´;
Open;
Result := Fields[0].AsInteger;
Close; //ou Transaction.Commit;
except
// seu tratamento de erro
end;
end;



T+


GOSTEI 0
POSTAR