ASP 调用 存储过程,关于分页的事,在asp论坛解决不了,所以过来了

Larrystudy 2006-05-17 03:36:00
下面的存储过程以及在ASP中调用时都没有错误出现,我认为是 OK 的。
问题是:

当我
Set rs=myComm.Execute

response.write rs.recordCount

无法输出 rs.recordCount的值,请大家帮忙看看

-------------------------------------------------------------

存储过程如下:

CREATE PROC myx_prPageRecordset
@queryStr nvarchar(1000),
@keyField nvarchar (200),
@pageSize int,
@pageNumber int
AS
BEGIN
DECLARE @sqlText AS nvarchar(4000)
DECLARE @sqlTable AS nvarchar(4000)
SET @sqlTable = 'SELECT TOP ' + CAST((@pageNumber + 1) * @pageSize AS varchar(30)) + ' ' + @queryStr
SET @sqlText =
'SELECT TOP ' + CAST(@pageSize AS varchar(30)) + ' * ' +
'FROM (' + @sqlTable + ') AS tableA ' +
'WHERE ' + @keyField + ' NOT IN(SELECT TOP ' +
CAST(@pageNumber * @pageSize AS varchar(30)) + ' ' + @keyField +
' FROM (' + @sqlTable + ') AS tableB)'
print @sqlText
EXEC (@sqlText)
END

GO

在 ASP 中调用如下:
<%
PageSize=10
myPage=2

set myComm = server.CreateObject("adodb.command")
myComm.ActiveConnection = conn
myComm.CommandType = adCmdStoredProc
myComm.CommandText = "myx_prPageRecordset"
myComm.prepared=True

sql=" * from cw82014.hyxx order by newsid DESC"
myComm.Parameters.Append myComm.CreateParameter("@queryStr", adVarWChar, adParamInput, 1000, sql)

myComm.Parameters.Append myComm.CreateParameter("@keyField", adVarWChar, adParamInput, 200, "[newsid]")

myComm.Parameters.Append myComm.CreateParameter("@pageSize", adVarWChar, adParamInput, 1000, PageSize)

myComm.Parameters.Append myComm.CreateParameter("@pageNumber", adVarWChar, adParamInput, 1000, myPage - 1)

Set rs=myComm.Execute

response.write rs.recordCount
%>
...全文
148 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Larrystudy 2006-05-18
  • 打赏
  • 举报
回复
再顶一下
Larrystudy 2006-05-17
  • 打赏
  • 举报
回复
就是不能显示任何值

是不是在 存储过程 中,要有返回值存在才可以啊

我在查询分析器中 print @sqlText 的值在下面:

SELECT TOP 10 * FROM (SELECT TOP 30 * from hyxx order by newsid DESC) AS tableA WHERE newsid NOT IN(SELECT TOP 20 newsid FROM (SELECT TOP 30 * from hyxx order by newsid DESC) AS tableB)

也有 10 笔资料被查找出来。

itblog 2006-05-17
  • 打赏
  • 举报
回复

Set rs=myComm.Execute
去掉,加上下面这个试试:

Set rs = Server.CreateObject ("ADODB.Recordset")
rs.Open myComm,, 3, 1
Larrystudy 2006-05-17
  • 打赏
  • 举报
回复
这里无法贴图,否则,我会把在 SQL查询分析器 里执行的结果贴出来的

Larrystudy 2006-05-17
  • 打赏
  • 举报
回复
可以正常执行,并且有正确的结果

itblog 2006-05-17
  • 打赏
  • 举报
回复
存储过程在SQL查询分析器里可以执行吗?
Larrystudy 2006-05-17
  • 打赏
  • 举报
回复
多谢 ljf840303(校园X怪怪)

我按照你所说的写了,可就是没有结果出现

甚至我写:response.write "AAAAAAAAA"&rs.recordcount

都不会出现了。我想最少也得出现 AAAAAAAAA 吧?
ljf840303 2006-05-17
  • 打赏
  • 举报
回复
objRs.CursorLocation = 3
objRs.LockType = 2
objRs.Open objCmd

请检查您的RecordSet 对象的游标。我这里设置成3,2才可以用。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧