Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Выполнение хранимой процедуры на SQL сервере / 11 сообщений из 11, страница 1 из 1
13.05.2008, 14:46
    #35309115
SuperJur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение хранимой процедуры на SQL сервере
Привет!

Обычный select нормально отрабатывается

Set conn = New ADODB.Connection
conn.Open "..."
Set R = conn.Execute("SELECT CODE FROM ft22.DBO.rt ORDER BY CODE")

а вызов хранимой процедуры не возвращает открытый набор данных:

Set R = conn.Execute("oper0009('20080401', '20080501', '12', 2000)", adCmdStoredProc)
или
Set R = conn.Execute("exec oper0009 '20080401', '20080501', '12', 2000", adCmdStoredProc)

Что можно сделать? Как правильно вызывать хранимую процедуру ?
...
Рейтинг: 0 / 0
13.05.2008, 15:27
    #35309307
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение хранимой процедуры на SQL сервере
Проблема в процедуре, а не вызове. В ней видимо не хватает строки set nocount on.
...
Рейтинг: 0 / 0
13.05.2008, 15:29
    #35309318
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение хранимой процедуры на SQL сервере
для запуска хп лучше использовать ADODB.Command
покажи сам код хп
...
Рейтинг: 0 / 0
13.05.2008, 15:46
    #35309405
SuperJur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение хранимой процедуры на SQL сервере
фуф, спасибо! заработало!
...
Рейтинг: 0 / 0
13.05.2008, 15:46
    #35309408
SuperJur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение хранимой процедуры на SQL сервере
set nocount on - вот, где @ порылась!
...
Рейтинг: 0 / 0
13.05.2008, 17:47
    #35309858
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение хранимой процедуры на SQL сервере
SuperJurset nocount on - вот, где @ порылась!Это неверное и кривое решение.
Твой код должен уметь запускать процедуры и при наличии и при отсутствии этой настройки.
Читать описание на метод ADODB.Recordset.NextRecordset()
...
Рейтинг: 0 / 0
13.05.2008, 20:18
    #35310132
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение хранимой процедуры на SQL сервере
Чем оно кривое, позвольте полюбопытствовать.
...
Рейтинг: 0 / 0
13.05.2008, 20:38
    #35310157
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение хранимой процедуры на SQL сервере
AntonariyЧем оно кривое, позвольте полюбопытствовать.Тем что оно меняет на лету настройки сервера.
Ты либо делай свою set nocount on при коннекте, либо учитывай возможность множественных резалтсетов в клиенте. Это будет правильными решениями.
А менять настройки сервера внутри ХП это очень плохая идея. Сегодня ты из VB данные просишь, завтра из C++, послезавтра из isql и будешь каждый раз переправлять хранимку либо ахать "ой а куда это моя статистика подевалась?!".
...
Рейтинг: 0 / 0
14.05.2008, 09:30
    #35310632
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение хранимой процедуры на SQL сервере
Ну а что же мешает в конце сделать set nocount off?
...
Рейтинг: 0 / 0
14.05.2008, 17:37
    #35312586
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение хранимой процедуры на SQL сервере
AntonariyНу а что же мешает в конце сделать set nocount off?Выбирай на вкус:
забывчивость человека написать этот самый set nocount off

тот мелкий факт что писать его непосредственно перед селектом будет бессмысленно, а то что клиент не умеет обрабатывать множественные резалтсеты помешает процедуре выполнится до конца, в смысле все то что после селекта не будет отработано.

возможность что хранимка упадет где-то в середине (может даже легально упадет с диагностикой о некорректных параметрах)
...
Рейтинг: 0 / 0
15.05.2008, 14:32
    #35314587
SuperJur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение хранимой процедуры на SQL сервере
Спасибо! Сделал conn.Execute ("SET NOCOUNT ON") на стороне клиента.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Выполнение хранимой процедуры на SQL сервере / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]