![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с ADO [D5, D6, MSSQL]
AndrewK © (2002-03-19 12:54:00)Как выполнить запрос на вставку записи с возвращением числа.
Есть хранимая процедура на MSSQL Server 7, которая вставляет записи в таблицу и возвращает идентификационный номер записи, получаемый внутри процедуры переменной @@Identity. С помощью TQuery раньше делал так:
with TQuery.Create(nil) do
try
SQL.Text := "MyStoredProc ....";
Active := True;
NewID = FieldByName("NewID").AsInteger;
finally
Active := False;
Free;
end;
Все работало
Комбинация
with TADOQuery.Create(nil) do
try
SQL.Text := "MyStoredProc ....";
Active := True;
NewID = FieldByName("NewID").AsInteger;
finally
Active := False;
Free;
end;
не работает. Выдается сообщение "CommandText does not return a result set."
Процедура значение возвращает в любом случае. Как можно выполнить процедуру и получить значение с помощью ADO?
Дмитрий (2002-03-19 15:56:00) [1]Пардон, грамотней так: (""1"", ""2"", ""3"")
:))
Дмитрий (2002-03-19 15:54:00) [2]rs.close; //rs - TAdoQuery
rs.sql.text:="insert into tbl values("1", "2", 3"); select @@identity as C1 from tbl";
rs.Open;
{int} identity = rs.fieldbyname("C1").asinteger;
alehan (2002-03-19 14:33:00) [3]Для вызова хранимой процедуры логичнее бы было использовать TADOStoredProc.
with TADOStoredProc.Create(self) do
try
Connection:=...;
ProcedureName:="MyStoredProc;1";
ExecProc;
NewID := Parameters.ParamByName("@NewID").Value;
finally
Free;
end;