0

在我的经典 asp 应用程序中,我正在调用一个存储过程,它应该通过一个 select 语句为我获取一个记录集。如果我在 sql management studio 中尝试存储过程选择语句,我会得到 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)

旧工作代码:

newHireSQL = "select * from NewHire where Archived = 0 order by HireID desc"
Set rsGetHireID = Server.CreateObject("ADODB.Recordset")
rsGetHireID.Open newHireSQL,ConnectionString,adOpenStatic

新编辑:似乎修复是从存储过程中删除 BEGIN 和 END,这会导致循环。

4

3 回答 3

1

我很确定您的问题是您在记录集上打开的游标类型。并非所有这些都支持 recordcount 属性。

来自 MSDN

使用 RecordCount 属性找出 Recordset 对象中有多少条记录。当 ADO 无法确定记录数或者提供程序或游标类型不支持 RecordCount 时,该属性返回 -1。读取已关闭 Recordset 上的 RecordCount 属性会导致错误。

要指定游标类型,您需要对记录集对象使用 open 方法。

'use CursorType=3 (Static)
rsGetHireID .Open CommandObjectOrSQLQuery, Conn , CursorType
于 2013-05-10T18:12:15.793 回答
0

您可以使用的简单方法..

1.rsGetHireID.open newHireSQL,Conn,1,3

谢谢

于 2013-05-10T19:01:24.770 回答
-2

删除存储过程模板默认放置的 BEGIN 和 END。有这些会导致循环。

于 2013-05-10T20:44:27.900 回答