Retornar o sequêncial via Identity no Interbase
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;
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
Curtidas 0
Respostas
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+
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