![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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]
> Грешу только на какие-то хитрые настройки безопасности в
> скуль-сервере...
Скорее всего.