Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с вызовом хранимой процедуры 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 - сделает, что нужно и вернет набор данных


Наверх

Титульная страница Поиск, карта сайта Написать письмо