ADO Issue, параметр "@IsNew", не вызывающий результатов, возвращаемых? - PullRequest
0 голосов
/ 07 августа 2009

Это ADO в классическом ASP.

У меня есть хранимая процедура с параметром @IsNew типа int.

Я могу позвонить через SQL:

EXEC    [dbo].[SearchVehicles]
    @WebsiteName = N'AMSVans',
    @SortOrder = N'Year DESC,Status ASC',
    @Statuses = N'Unsold',
    @IsNew = 1

И наборы возврата в точности соответствуют ожиданиям.

Однако, когда я пытаюсь использовать его на своей веб-странице:

cmd.CommandText = "AMSVans.dbo.SearchVehicles"
cmd.CommandType = adCmdStoredProc

cmd.Parameters.Append cmd.CreateParameter("@WebsiteName", adVarChar, , 75, "AMSVans")
cmd.Parameters.Append cmd.CreateParameter("@SortOrder", adVarChar, , 500, "Year DESC,Status ASC," + SortMethod)
cmd.Parameters.Append cmd.CreateParameter("@Statuses", adVarChar, , 500, Statuses)
cmd.Parameters.Append cmd.CreateParameter("@IsNew", adInteger, , 4,1)
cmd.Parameters.Append cmd.CreateParameter("@Categories", adVarChar, , 500, "AMS Vans")

Set r = cmd.Execute

Я ничего не получаю. Нада. Шиш.

Я даже не уверен, с чего начать отладку: - /

Обновление RE «Установить учетную запись вкл.»:

Интересно, что если я выключу его (т.е. закомментирую эту строку), я получу эту ошибку:

ADODB.Recordset error '800a0e78' 
Operation is not allowed when the object is closed. 
/pages/inventory/main.asp, line 109 

Соответствующая строка (r - набор записей):

if not (r.EOF and r.EOF) then invFound = true

Ответы [ 2 ]

1 голос
/ 07 августа 2009

Если ваша хранимая процедура может создавать несколько наборов результатов (включая промежуточные результаты, которые не предназначены для возврата), попробуйте включить nocount в начале процедуры. Несколько результатов могут вызвать проблемы для наборов записей ado.

, например

Set NoCount On

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

Редактировать

Я заметил, что вы указываете длину для параметра int, которая необходима только для типов переменной длины и обычно по умолчанию равна 0, попробуйте ее опустить.

0 голосов
/ 07 августа 2009

Теперь я понимаю, что это было бы очевидно для всех, если бы я счел уместным сказать, что процедура имеет около 20 параметров, а поскольку @IsNew был последним, а остальные были первыми - ну, давайте просто скажем то, что добавление значений по умолчанию для тех между ними сделало все различия.

...