Я работаю с хранимой процедурой SQL Server в Classic ASP с 3 параметрами.Я пытаюсь найти счет записи, но он возвращает '-1'.
Я видел похожий пост , сделал то, что он предложил (проверьте cursortype и добавьте 'set nocount on' в хранимой процедуре), но эти изменения не повлияли на количество записей -1.
Вот мой код на странице Classic ASP, ниже.
strInterestName = request("InterestName")
strActiveDate = request("activedate")
strExpireDate = request("expiredate")
Set objCommandSec = CreateObject("ADODB.Command")
Set objRS = CreateObject("ADODB.RecordSet")
objRS.cursorlocation = 3
objRS.cursortype = adOpenStatic
With objCommandSec
Set .ActiveConnection = objConnection
.CommandText = "[01_cms_search_pg_select_news_items_4]"
.CommandType = 4
.Parameters.Append .CreateParameter("@InterestName",adVarChar,
adParamInput, 25)
.Parameters.Append .CreateParameter("@ActiveDate",adDate, adParamInput)
.Parameters.Append .CreateParameter("@ExpireDate",adDate,
adParamInput)
.Parameters("@InterestName") = strInterestName
.Parameters("@ActiveDate") = strActiveDate
.Parameters("@ExpireDate") = strExpireDate
set objRS =.Execute()
End With
Ниже приведен код для хранимой процедуры:
ALTER PROCEDURE [dbo].[01_cms_search_pg_select_news_items_4]
@InterestName varchar(50),
@ActiveDate datetime,
@ExpireDate datetime
AS DECLARE @sql nvarchar(4000)
SELECT @sql = ' SELECT * ' +
' FROM news ' +
' WHERE ' +
' bulletin_display_indicator = ''true'' '+
' AND ' +
' website_homepg_display_indicator= ''false'' '
IF @InterestName is not null
SELECT @sql = @sql + ' AND (InterestName = @InterestName)
IF @ExpireDate is not null and @ExpireDate IS NOT NULL
SELECT @sql = @sql + ' AND (expiredate between @ActiveDate and @ExpireDate)
SELECT @sql = @sql + '; '
EXEC sp_executesql @sql, N'@InterestName varchar(50), @ActiveDate
DateTime, @ExpireDate DateTime',@InterestName, @ActiveDate,
@ExpireDate