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

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

CommandText does not return a result set [D2005, XP]


девушка ©   (2009-07-07 09:58:00) 

Добрый день!

Для выборки данных из БД MS SQL 2005 использую ХП вида:

select *
from table1 ...


В приложении TDataSet с запросами вида:

execute dbo.sp_CUSTOMER_select
@period=:period
....


Выполняю запрос так:

dstCustomer.Parameters.ParamByName('period').Value:=period_curr;
...
dstCustomer.Active:=true;


У 99% пользователей все работает без ошибок.

Пользователи подключаются со следующими параметрами строки подключения:
Provider=SQLOLEDB.1
Integrated_Security=SSPI


Для пользователей, которые подключаются пологину и паролю (а не с использванием SSPI), на такие вызовы ХП выдется ошибка:
CommandText does not return a result set
Для запросов, вида:
select * from table1 ...без вызова ХП - все проходит нормально.

Такая же ситуация происходит с одним пользователем, подключающимся с SSPI.

Грешу только на какие-то хитрые настройки безопасности в скуль-сервере...


Anatoly Podgoretsky   (2009-07-07 15:57:00) [1]

> Dennis I. Komarov  (07.07.2009 14:59:09)  [9]

И получится революционная тройка.


Dennis I. Komarov   (2009-07-07 14:59:00) [2]

Ну вот, сейчас найдут третьего, и ... :'(

Сорри за флуд, скучно сегодня однако, у всех каникулы


MsGuns   (2009-07-07 14:29:00) [3]

>Ega23 ©   (07.07.09 13:01) [6]

Абсолютно справедливо.

Я даже голосую за предлагаемый тобою расстрел нарушителей


Dennis I. Komarov   (2009-07-07 14:08:00) [4]


> Но таких "приколов" как в сабже - ИМХО быть не должно

Да я не про это ;)


Ega23   (2009-07-07 13:01:00) [5]


> Уж больно вы грозны сегодня. Ты расстресивать собрался


Видишь ли. Можешь считать это тупостью, можешь педантизмом, можешь как угодно.
Но, ИМХО, если ты вызываешь ХП с определённым набором параметров (не значениями, а именно набором), а ХП в одном случае возвращает ResultSet, а вдругом - нет (в зависимости от значений этих параметров), то за такое надо стрелять.
Верни пустой resultSet. Подними exception. Сделай ещё что-нибудь. Но таких "приколов" как в сабже - ИМХО быть не должно.


Dennis I. Komarov   (2009-07-07 11:45:00) [6]


> Ega23 ©   (07.07.09 10:35) [3]

Уж больно вы грозны сегодня. Ты расстресивать собрался, у ИШ рука к пистолету тянется :)


девушка   (2009-07-07 10:46:00) [7]

угу


Ega23   (2009-07-07 10:35:00) [8]

ИМХО, за такой код расстреливать надо.
Заведи параметр и по нему поднимай исключение, например. Или как-то ещё. Но вот так, "тихой сапой"...


девушка   (2009-07-07 10:30:00) [9]

Ошибка нашлась :)
как было написано в http://forum.vingrad.ru/forum/topic-113693/0.html
чудес не бывает.

Оказалось, что процедура, считывающая настройки гридов для пользователей содержит бякостную строку:
CREATE PROCEDURE sys_options.p_GRID_OPT_select
(
@form_class_name varchar(50),
@grid_view_name varchar(50)
)
AS
BEGIN
 /* Тело процедуры */
 declare @id_person_user int;

 EXECUTE dbo.p_PERSON_USER_get_id
 @id_person_user = @id_person_user output;
 
if(@id_person_user is null)  ---ВОТ ОНА
 return;
 
 Select
 *
 from sys_options.GRID_OPT
 where
 id_person_user=@id_person_user and
 form_class_name=@form_class_name and
 grid_view_name=@grid_view_name    
 order by field_index  ;
 
END


И действительно запрос ничего не возвращает...
короче отлаживать надо лучше :(


Ega23   (2009-07-07 10:03:00) [10]


> Грешу только на какие-то хитрые настройки безопасности в
> скуль-сервере...


Скорее всего.


Наверх

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