首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

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

2012-01-11 
关于查询后返回的问题。。很少贴这么多东西问,但是实在是郁闷了,用空的前辈帮忙看看谢谢了,刚唯一的50分也问

关于查询后返回的问题。。
很少贴这么多东西问,但是实在是郁闷了,用空的前辈帮忙看看谢谢了,刚唯一的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

热点排行