![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с вызовом хранимой процедуры MSSQL+ADO [D5, MSSQL]
kvit © (2003-12-19 07:45:00)
Есть хранимая процедура:
CREATE PROCEDURE [P1]
AS
insert into TABLE1 (npp, name)
values (1, "qwerty")
select * from TABLE1
но делфи выдает ошибку, что данная процедура не выдает result set, хотя через BDE Query - работает.
Хранимые процедуры с чистым select или insert работают, а в смешенном исполнении ругаются. Как быть?
Вызов из делфи:
exec P1
ADOQuery.Open;
Shirson (2003-12-19 10:15:00) [1]
Вообще-то странно. У меня похожая процедура используется и без nocount прекрасно работатет. И на отсутствие датасета не ругается. (причём таких процедур и не одна совсем)
Тут, видимо, что-то с самой таблицей.
Nikolay M. (2003-12-19 10:06:00) [2]
> Set NoCount ON/OFF
Имхо, ошибка была бы другая, а не "отсутствие резалтсета".
Ega23 (2003-12-19 09:57:00) [3]
> kvit © (19.12.03 09:51) [7]
Set NoCount ON/OFFоднозначно.
kvit (2003-12-19 09:51:00) [4]
дело в том, что настоящая хранимая процедура делает большое количество вычисления, а в результате должен быть select результата. Можно сделать и через буфферную таблицу и обойтись двумя прецедурами обработки и выборки, но не хотелось бы ломать свой стереотип BDE, где это все прекрасно работало!
Nikolay M. (2003-12-19 09:39:00) [5]
У меня прекрасно работает. А npp, случайно, не первичный ключ?
Если грохнуть все данные из таблицы и сделать инсерт только поля name?
Shirson (2003-12-19 09:33:00) [6]
А если так?
CREATE PROCEDURE [P1]
AS
set nocount on
insert into TABLE1 (npp, name)
values (1, "qwerty")
set nocount off
select * from TABLE1
kvit (2003-12-19 09:25:00) [7]
Через ADOStroreProc тоже не работает!
там SQL строка: exec P1
а открываю как: ADOStoreProc.Open
примечание!
insert отрабатывает, а select - нет!
тоже самое и через ADOQuery.
ошибка нет возвращаемого result set
Nikolay M. (2003-12-19 09:12:00) [8]
А через ADOStoredProc работает?
kvit (2003-12-19 08:45:00) [9]
не понял запись P1.Open!
Это что такой ADO-объект или SQL строка?
BoxTer (2003-12-19 07:53:00) [10]
а зачем ADOQuery.Open...
Просто: P1.Open - сделает, что нужно и вернет набор данных