我正在尝试使用Classic ASP为站点中的搜索功能编写一个非常简单的脚本。如下:
<%
Dim keyword, page
set Cnt=Server.CreateObject("ADODB.Connection")
keyword = Request.QueryString("s")
page = Cint(Request.QueryString("p"))
Function openDB()
DSN="Driver={SQL Server};Server=xx.xxx.xxx.xxx;Database=db_xxx;UID=xxx;PWD=xxx"
Cnt.Open(DSN)
End Function
Function closeDB()
Cnt.Close()
End Function
If (page = 0) Then
page = 1
End If
If (Trim(keyword) <> "") Then
openDB()
strSQL = "WITH OrderedResults AS (SELECT *, ROW_NUMBER() OVER (order by memorialid) as RowNumber FROM memorials WHERE bg LIKE '%2%') SELECT * FROM OrderedResults WHERE RowNumber between 1 and 5"
set rs = cnt.execute(strSQL)
While NOT rs.EOF
Response.Write(rs("name"))
Wend
closeDB()
End If
%>
问题是,这个脚本只是暂时超时。目前表中只有5条记录,当我直接在Managment Studio中运行SQL时,它会以毫秒为单位返回结果。任何人都可以帮我弄清楚为什么这个脚本需要这么长时间。
答案 0 :(得分:4)
您错过了重要的rs.movenext
While NOT rs.EOF
Response.Write(rs("name"))
rs.movenext
Wend
否则你的代码永远不会退出循环,因为它会继续打印相同的记录..