Databáze > Firebird a Interbase

Nastavení hodnoty generátoru v uložené proceduře

(1/2) > >>

Jirka:
Ahoj.
Je nějaký způsob jak nastavit stávající generátor na 0  přímo v stored procedure ?
SET GENERATOR GeneratorName TO 0

Stanislav Hruška:
Nie je to odpoveď na Tvoju otázku, no možno Ti to pomôže. Ja totiž SP nepoužívam.
--- Kód: ---class procedure TSQLTexts.ResetGenerator(const AGeneratorName: string);
begin
  var GeneratorName := Trim(AGeneratorName);
  Assert(GeneratorName <> '', '  ResetGenerator: GeneratorName is empty  ');
  var FQry := TFDFunction.NewQry;
  FQry.Name := 'ResetGenerator';
  FQry.SQL.Text := 'SELECT MAX(UNITS.IDUNITS), GEN_ID(' + AGeneratorName + ', -(GEN_ID(' + AGeneratorName + ', 0)))'+
  ' FROM UNITS';
  try
    TFDFunction.QryOpen(FQry);
  finally
    TFDFunction.FreeAndNilQry(FQry);
  end;
end;
--- Konec kódu ---
Mám na mysli spôsob nastavenia samotnej hodnoty. Je to z internetu a funguje to.

Palino:
Toto mne funguje.

create or alter procedure AAA
as
declare variable SQL varchar(500);
begin
  sql = 'ALTER SEQUENCE GEN_AA_ID RESTART WITH 279580';

  execute statement :sql;

end^

vandrovnik:
GEN_ID má jako druhý parametr, o kolik se má hodnota změnit, to se dá využít i pro nastavení nové hodnoty, když si nejprve zjistím stávající.

Jirka:

--- Citace: Palino  09-05-2023, 13:19:12 ---Toto mne funguje.
  sql = 'ALTER SEQUENCE GEN_AA_ID RESTART WITH 279580';
  execute statement :sql;

--- Konce citace ---

Firebird 2.5
Funguje i u mne. Díky.

Navigace

[0] Seznam témat

[#] Další strana

Přejít na plnou verzi