Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Код возврата ХП после ADO-Execute / 4 сообщений из 4, страница 1 из 1
12.04.2005, 07:46:08
    #33009657
Stok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Код возврата ХП после ADO-Execute
Есть хранимая процедура на MS SQL, скажем
Код: plaintext
1.
2.
3.
4.
5.
Alter	proc MeProc (@M_Id int= 0 ) 
as Begin
SET NOCOUNT ON
Select GetDate()
Return  99 
End
Вызываем ее из модуля VB:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
With cmd
   .CommandText = "MeProc"
   .CommandType = adCmdStoredProc
    .Parameters.Refresh
    .Parameters.Item("@M_Id").Value = vMel_Id
   Set rstTMP = .Execute()
  MsgBox .Parameters("@RETURN_VALUE")
End With
Если ХП ничего не возвращает в RecordSet [т.е. закомментарено Select GetDate()], то код возврата прекрасно анализируется. Если же ХП возвращает и таблицу и код возврата, то @RETURN_VALUE всегда Null.
За что они меня так? Как получить и то и другое?
Добавление в список параметров нового OUTPUT-параметра приводит к тем же результатам.
...
Рейтинг: 0 / 0
12.04.2005, 09:29:50
    #33009798
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Код возврата ХП после ADO-Execute
Полученный рекордсет надо сперва закрыть, тогда будет доступен следующий output. Курсор должен быть клиентский.
...
Рейтинг: 0 / 0
12.04.2005, 10:03:30
    #33009888
Stok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Код возврата ХП после ADO-Execute
Большое спасибо! Так оно и есть.
Я почему-то подумал, что коды возврата не толпятся последними в очереди рекордсетов, а занимают более привилигированное положение.

Объявление в аэропорту: <Уважаемые пассажиры! Мы просим всех, потерявших коричневый бумажник с пятью тысячами долларов, не толпиться, а встать по двое в очередь к окошечку бюро информации>.
...
Рейтинг: 0 / 0
13.04.2005, 11:35:01
    #33012768
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Код возврата ХП после ADO-Execute
Абсолютно весь output внутренне организован как последовательные наборы данных (рекордсеты), в том числе: возвращаемые параметры, результат процедуры, варнинги, сообщения об ошибках и результаты оператов print. На клиенте они преобразуются в более ожидаемый вид.
То, что в данном случае рекордсет получается раньше возвращаемого значения - логично, поскольку рекордсет сформировался на исполнении оператора SELECT, а возвращаемое значение только по завершении процедуры, т.е. после селекта.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Код возврата ХП после ADO-Execute / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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