Используйте TDOQuery
компонент с OUTPUT
, чтобы вставить данные и вернуть ID
s как
AQ.Close;
AQ.SQL.Clear;
AQ.SQL.Add('INSERT INTO Table (Col1, Col2) OUTPUT INSERTED.ID VALUES (:Param1, :Param2)');
AQ.Parameters.ParamByName('Param1').Value:= SomeValue;
AQ.Parameters.ParamByName('Param2').Value:= SomeValue;
AQ.Open;
Обратите внимание, что вам нужно использовать Open
метод вместо ExecSQL
для возврата результатов.
Вы также можете использовать SCOPE_IDENTITY
, и вам нужно будет создать параметр для возврата значения и назначить pdReturnValue
для Direction
этого параметра.
Var InsertedID: Integer;
...
AQ.Close;
AQ.SQL.Clear;
AQ.SQ.Add('INSERT INTO Table (Col1, Col2) VALUES (:Param1, :Param2);');
AQ.SQL.Add('SET :ID = SCOPE_IDENTITY()');
AQ.Parameters.ParamByName('Param1').Value:= SomeValue;
AQ.Parameters.ParamByName('Param2').Value:= SomeValue;
AQ.Parameters.ParamByName('ID').Direction:= pdReturnValue
AQ.ExecSQL;
InsertedID:= AQ.Parameters.ParamByName('ID').AsInteger;
AQ в данном примере это TADOQuery
.