我的记录集的记录数为-1?

时间:2013-05-10 17:26:15

标签: sql asp-classic

在我的经典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,这导致循环。

3 个答案:

答案 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。有那些导致循环。