关于查询后返回的问题。。
很少贴这么多东西问,但是实在是郁闷了,用空的前辈帮忙看看谢谢了,刚唯一的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
[解决办法]
rs.MoveNext
Wend
record_count=wc(8)
rs.close
set rs=nothing
set wc=nothing