Databáze > Firebird a Interbase
Nastavení hodnoty generátoru v uložené proceduře
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