Я использую ASP classic с ADO, подключаясь к SQL Server 2008.
Я унаследовал этот код, и он настолько искажен, что я попытаюсь воссоздать соответствующие части. Если вам нужно больше подробностей или я что-то пропустил, пожалуйста, сообщите мне.
Я создаю команду и добавляю параметры
oCmd.CommandType = adCmdStoredProc
...
oCmd.Parameters.Append oCmd.CreateParameter("@MyOutputParam", adInteger, adParamOutput, 4, NULL)
Позже я открываю ридер из этой команды:
oRS.Open oCmd, , adOpenForwardOnly, adLockReadOnly
После этого, пока открыт oRS, но до того, как я прочитал какие-либо записи или значения, я пытаюсь получить значение выходного параметра, используя one из следующих строк:
val1 = oCmd("@MyOutputParam")
val2 = oCmd("@MyOutputParam").Value
val3 = oCmd.Parameters("@MyOutputParam").Value
Все три (val1, val2, val3) переменные являются DB NULL.
Я подтвердил, что запуск SP в анализаторе запросов возвращает значение параметра @MyOutputParam:
declare @p33 int
exec usp_GetResultAndOutput 1, 2, 3, @p33 output
select @p33
Возвращает набор моих ожидаемых записей и второй набор записей, показывающий число в одной строке.
Я даже пытался вызвать rs.NextRecordset, прежде чем пытаться получить выходной параметр, но это не сработало.
Есть ли другой способ обработки выходных параметров?
Это нормально, что я возвращаю набор записей и выходные параметры?