По какой-то фантастической причине я обнаруживаю, что отлаживаю проблему на странице классического ASP (по крайней мере 10 лет моей жизни потеряно за последние 2 дня).
Я пытаюсь выполнить хранимую процедуру,содержит некоторые параметры OUT.Проблема в том, что один из параметров OUT не заполняется, когда хранимая процедура возвращается.Я могу выполнить сохраненный процесс из SQL Management Studio (это 2008), и все значения устанавливаются и возвращаются точно так, как ожидалось.
declare @inVar1 varchar(255)
declare @inVar2 varchar(255)
declare @outVar1 varchar(255)
declare @outVar2 varchar(255)
SET @inVar2 = 'someValue'
exec theStoredProc @inVar1 , @inVar2 , @outVar1 OUT, @outVar2 OUT
print '@outVar1=' + @outVar1
print '@outVar2=' + @outVar2
Отлично работает.Фантастика.Отлично.Точные значения, которые я ожидаю, возвращаются и распечатываются.
Верно, поскольку я пытаюсь отладить страницу Classic ASP, я скопировал код в файл VBScript, чтобы попытаться сузить проблему.
Вот что я придумал:
Set Conn = CreateObject("ADODB.Connection")
Conn.Open "xxx"
Set objCommandSec = CreateObject("ADODB.Command")
objCommandSec.ActiveConnection = Conn
objCommandSec.CommandType = 4
objCommandSec.CommandText = "theStoredProc "
objCommandSec.Parameters.Refresh
objCommandSec.Parameters(2) = "someValue"
objCommandSec.Execute
MsgBox(objCommandSec.Parameters(3))
Не работает.Даже не немного.(Еще десять лет моей жизни на ветер) Третий параметр просто NULL - это то, что я испытываю и на странице Classic ASP.
Может ли кто-нибудь пролить свет на это?Я совершенно безрассуден, думая, что классический код ASP будет таким же, как код VBScript?Я думаю, что он использует тот же механизм сценариев и синтаксис, поэтому я должен быть в порядке, но я не уверен на 100%.
Результат, который я вижу из моего VBScript, такой же, как я вижу в ASP.