在我的经典asp应用程序中,我正在调用一个存储过程,它应该通过select语句给我一个记录集。如果我在sql管理工作室中尝试存储过程select语句,我会得到100行,但是当我尝试在类asp代码中调用它时,我得到一个记录集,其记录数为-1。
有谁知道为什么会发生这种情况?
感谢。
编辑:
Dim Conn
SET rsGetHireID = Server.CreateObject("ADODB.RecordSet")
SET Conn = Server.CreateObject("ADODB.Command")
Conn.CommandText = "sp_selectNewHireSQL"
Conn.CommandType = adCmdStoredProc
Conn.ActiveConnection = ConnectionString
Set rsGetHireID = Conn.Execute
NumOfHireID = rsGetHireID.RecordCount
Response.Write (NumOfHireID)
OLD工作代码:
newHireSQL = "select * from NewHire where Archived = 0 order by HireID desc"
Set rsGetHireID = Server.CreateObject("ADODB.Recordset")
rsGetHireID.Open newHireSQL,ConnectionString,adOpenStatic
新编辑: 似乎修复是从存储过程中删除BEGIN和END,这导致循环。
答案 0 :(得分:1)
我很确定您的问题是您在记录集上打开的光标类型。并非所有这些都支持recordcount属性。
来自MSDN
使用RecordCount属性查找a中有多少条记录 Recordset对象。 当ADO无法确定时,该属性返回-1 记录数或提供者或游标类型没有 支持RecordCount 。在关闭时读取RecordCount属性 Recordset导致错误。
要指定游标类型,您需要在记录集对象上使用open方法。
'use CursorType=3 (Static)
rsGetHireID .Open CommandObjectOrSQLQuery, Conn , CursorType
答案 1 :(得分:0)
您可以轻松使用..
1.rsGetHireID.open newHireSQL,Conn,1,3
感谢名单
答案 2 :(得分:-2)
删除存储过程模板默认放置的BEGIN和END。有那些导致循环。