关于查询后返回的问题。。

muxrwc 2007-08-07 04:55:32
很少贴这么多东西问,但是实在是郁闷了,用空的前辈帮忙看看谢谢了,刚唯一的50分也问这个问题了,但是没有得到答案。。

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go



ALTER PROCEDURE [dbo].[cpage] (
@page_num int, -- 当前页数
@page_max int, -- 每页显示条数
@table varchar(50), -- 表名
@id varchar(20), -- ID字段
@shows varchar(800), -- 显示列
@sort varchar(20), -- 排序字段(推荐用ID)
@where varchar(800), -- 查询条件不推荐用like '%..'
@order varchar(20), -- 排序方式
@record_count int OUTPUT, -- 记录总数
@page_count float OUTPUT
)
As

DECLARE @sql nvarchar(4000), @t_where varchar(800), @t_order varchar(50), @mod int, @top int

IF @where Is Null Or LTrim(RTrim(@where)) = '' -- 设置条件
SET @t_where = ''
ELSE
SET @t_where = ' WHERE ' + LTrim(RTrim(@where))

IF @order = 'DESC' -- 设置排序
SET @t_order = 'ASC'
Else
SET @t_order = 'DESC'

SET @sql = 'SELECT @record_count = COUNT(*) FROM ' + @table + @t_where

EXEC sp_executesql @sql, N'@record_count int OUTPUT', @record_count OUTPUT -- 返回记录总数

SET @page_count = @record_count / @page_max
SET @mod = @record_count - CAst(@page_count As int) * @page_max
IF @mod > 0 SET @page_count = @page_count + 1

IF @page_count > @page_num Or @mod = 0 -- 设置显示页数
SET @top = @page_max
ELSE
SET @top = @mod

SET @sql = 'SELECT temp.' + @id + ', data.' + Replace(@shows, ',', ', data.') + ' FROM (' +
'SELECT TOP ' + CAst(@top As varchar) + ' * FROM (' +
'SELECT TOP ' + CAst(@page_num * @page_max As varchar) + ' ' + @id +
' FROM ' + @table + @t_where + ' ORDER BY ' + @sort + ' ' + @order +
') As temp ORDER BY ' + @sort + ' ' + @t_order + ') As temp' +
' INNER JOIN' + @table + ' As data ON temp.' + @id + ' = data.' + @id +
' ORDER BY temp.' + @id + ' ' + @order

EXEC sp_executesql @sql --这里只要一执行后,后面就接收不到值了,怎么解决啊。。



调用如下

wc.Parameters.Append wc.CreateParameter("@page_num", 3, 1, 8, 53821)
wc.Parameters.Append wc.CreateParameter("@page_max", 3, 1, 4, 15)
wc.Parameters.Append wc.CreateParameter("@table", 200, 1, 50, "[KC].[dbo].[kucun]")
wc.Parameters.Append wc.CreateParameter("@id", 200, 1, 20, "id")
wc.Parameters.Append wc.CreateParameter("@shows", 200, 1, 800, "*")
wc.Parameters.Append wc.CreateParameter("@sort", 200, 1, 20, "id")
wc.Parameters.Append wc.CreateParameter("@where", 200, 1, 800, "")
wc.Parameters.Append wc.CreateParameter("@order", 200, 1, 20, "DESC")
wc.Parameters.Append wc.CreateParameter("@record_count", 3, 2)
wc.Parameters.Append wc.CreateParameter("@page_count", 3, 2)



Set rs = wc.Execute

Response.Write wc.Parameters("@record_count").Value '就是收不到
Response.Write "<br />"
Response.Write wc.Parameters("@page_count").Value '它也收不到
Response.Write "<hr />"

While Not rs.Eof
Response.Write rs("id").Value & "<br />"
rs.MoveNext : Wend
...全文
268 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
muxrwc 2007-08-09
  • 打赏
  • 举报
回复
希望前辈们帮帮忙。。。。T_T
muxrwc 2007-08-08
  • 打赏
  • 举报
回复
顶下。。很想得到答案。。。。希望前辈们能帮下。。。。谢谢了。。。
嘿嘿。。今天涨了10分加上的说。。
muxrwc 2007-08-08
  • 打赏
  • 举报
回复
顶一下。。
muxrwc 2007-08-07
  • 打赏
  • 举报
回复
晕。。我这个是 SQL SERVER 2005


Microsoft SQL Server Management Studio 9.00.1399.00
Microsoft Analysis Services 客户端工具 2005.090.1399.00
Microsoft 数据访问组件 (MDAC) 2000.086.3959.00 (srv03_sp2_rtm.070216-1710)
Microsoft MSXML 2.6 3.0 5.0 6.0
Microsoft Internet Explorer 6.0.3790.3959
Microsoft .NET Framework 2.0.50727.832
操作系统 5.2.3790

显示不出来。。。

Set rs = wc.Execute

Response.Write wc.Parameters("@record_count").Value '就是收不到
Response.Write "<br />"
Response.Write wc.Parameters("@page_count").Value '它也收不到
Response.Write "<hr />"

While Not rs.Eof
Response.Write rs("id").Value & "<br />"
rs.MoveNext : Wend
rs.Close
Response.Write "<hr />"
Response.Write wc(8).Value '就是收不到
Response.Write "<hr />"
Response.Write wc.Parameters("@page_count").Value '它也收不到


服务器端脚本是这样写的。。。
不过还是非常感谢你。。。下班了。先回家了。。。嘿嘿。。。
sinian 2007-08-07
  • 打赏
  • 举报
回复
我的可以收到
muxrwc 2007-08-07
  • 打赏
  • 举报
回复
你的意思是关闭记录集后就可以接收?

但是我测试的话,还是获取不到内容啊。。。。


rs.Close
Response.Write "<hr />"
Response.Write wc(8).Value '就是收不到
Response.Write "<br />
Response.Write wc.Parameters("@record_count").Value '就是收不到
Response.Write "<br />"
Response.Write wc.Parameters("@page_count").Value '它也收不到
Response.Write "<hr />"
sinian 2007-08-07
  • 打赏
  • 举报
回复
写错了,这个
.
.
.
rs.movenext
wend
rs.close
record_count=wc(8)
set rs = nothing
set wc= nothing

muxrwc 2007-08-07
  • 打赏
  • 举报
回复
to ls

这个不好用啊
sinian 2007-08-07
  • 打赏
  • 举报
回复
rs.MoveNext
Wend
record_count=wc(8)
rs.close
set rs=nothing
set wc=nothing
muxrwc 2007-08-07
  • 打赏
  • 举报
回复
我只是想问下。。。怎么才能得到@record_count这个变量的值
它已经设置了OUTPUT类型了。。。
但是只要一EXEC(@sql)后。。外面就取不到了。。。。。。。。。。
muxrwc 2007-08-07
  • 打赏
  • 举报
回复
没有人愿意帮忙看下么??

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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