Как изменить значение генератора с помощью фреймворка dbExpress? Я хочу изменить значение генератора напрямую с помощью dbExpress, без написания хранимой процедуры на стороне СУБД или т. д. Пожалуйста, помогите мне сделать это.
Как изменить значение генератора с помощью фреймворка dbExpress без использования хранимых процедур?
Ответы (2)
AFAIK DBExpress не имеет класса, специализирующегося на работе с последовательностями/генераторами.
Вы по-прежнему можете использовать стандартный TSQLQuery, чтобы указать dbEngine изменить значение генератора, например:
procedure TMyDataModule.RestartMyGenerator;
begin
Q := TSQLQuery.Create;
try
Q.SQLConnection := MyConnection;
//compatible with firebird 1.x and 2.x
//Q.SQL.Text := 'set generator mygenerator to 0';
//better alternative, but compatible only with firebird 2.x
Q.SQL.Text := 'alter sequence mygenerator restart with 0';
Q.ExecSQL;
finally
Q.Free;
end;
end;
(непроверенный код, написанный прямо в этом окне)
person
jachguate
schedule
08.12.2012
Функция с параметром TableName возвращает следующее значение генератора
function TDM.GenID(TableName: string): Integer;
var
Qry: TSQLQuery;
begin
Qry := TSQLQuery.Create(Self);
try
Qry.SQLConnection := SQLConnection;
Qry.SQL.Add('SELECT GEN_ID(GEN_' + TableName + '_ID' + ', 1) ' +
'FROM RDB$DATABASE');
Qry.Open;
Result := Qry.Fields[0].AsInteger;
finally
Qry.Free;
end;
end;
person
dataol
schedule
31.12.2012
Настройте процедуру на имена ваших генераторов
- person dataol; 01.01.2013
извините за плохой английский
- person dataol; 01.01.2013
ALTER SEQUENCE
? - person TLama   schedule 08.12.2012