您的位置:程序门 -> .net技术 -> asp.net



求一条存储过程。。。解决完马上结贴,,,谢谢~~


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


求一条存储过程。。。解决完马上结贴,,,谢谢~~
发表于:2007-01-24 20:47:43 楼主
如:以下
create   proc   sp_search

@aname   varchar(20),
@bname   varchar(20),
@cname   varchar(20),
@pageindex   int,
@pagecount   int
)
as
declare   @sql   nvarchar(4000)
declare   @totalcount   int
declare   @startpage   int
declare   @endpage   int

set   @sql= 'select   aa.aname,bb.bname,cc.cname   from   aa  
    inner   join   bb   on   aa.aid=bb.aid  
    inner   join   cc   on   cc.bid=bb.bid   where   (1=1) '

if(@aname   <>   ' ')
set   @sql   =   @sql   +   '   and   aa.aname   like   ' '% '+@aname+ '% ' ' '
if(@bname   <>   ' ')
set   @sql   =   @sql   +   '   and   bb.bname   like   ' '% '+@bname+ '% ' ' '
if(@cname   <>   ' ')
set   @sql   =   @sql   +   '   and   cc.cname   like   ' '% '+@cname+ '% ' ' '

EXEC   sp_EXECutesql   @sql
小弟我这样写不知道如何才能实现分页,,望大侠们帮忙写下。。。
就是传入@pageindex,@pagecount这两个参数能够让其搜索分页??

还有我的是用sql2005.。不知道有没有什么好办法。。

发表于:2007-01-24 20:54:191楼 得分:0
sql   2005下   分页   更简单  
declare   @rows_per_page   as   integer
declare   @current_page   as   integer
declare   @start_row_num   as   integer

--   设置每页的行数
set   @rows_per_page   =   20
--   设置要显示的页号(从1开始)
set   @current_page   =   2
--   设置开始行号
set   @start_row_num   =   (@current_page   -   1)   *   @rows_per_page

with   t   as

    select   row_number()   over(order   by   id)   as   row_number,   *  
    from   testtable
)
select   *   from   t  
where   row_number   between   @start_row_num   and   @start_row_num   +   @rows_per_page
//--楼主也可以去我的blog去看看   存储过程分页的2分算法
当然要是用分页控件   www.webdiyer.com这里的   当仁不让
发表于:2007-01-24 20:55:022楼 得分:0
sql2005写的分页存储过程
写了测,测了写,写了好久,才写好……
拿出来,大家分享喽
set   ansi_nulls   on
set   quoted_identifier   on
go
alter   procedure   up_getrecordbypage    
      @tblname             varchar(255),               --   表名  
      @keyname       varchar(255),     --主键
      @pagesize           int   =   10,                       --   页尺寸
      @pageindex         int   =   0   ,                   --   页码    
      @strwhere           varchar(1000)   =   ' '     --   查询条件   (注意:   不要加   where)
as  
declare   @strsql       varchar(6000)               --   主语句
declare     @beginitemindex     int         --开始项
declare     @enditemindex     int           --结束项
set   @beginitemindex=@pageindex*@pagesize
set   @enditemindex=@beginitemindex+@pagesize
set   @strsql= 'select   top   10   *   from

select   *,
row_number()   over(   order   by   '+@keyname+ '   desc   )   as   rowno  
from   '
set   @strsql=@strsql+@tblname+ '   where   1=1   '
  if   @strwhere!= ' '
begin  
set   @strsql=@strsql+@strwhere;
end
 
set   @strsql=@strsql+ ')  
as   tabetemp  
where   rowno   > = '+cast   (@beginitemindex   as   varchar   )   + '   and   rowno   <= '+   cast   (@enditemindex   as   varchar)
print   @strsql
EXEC(@strsql)
go
发表于:2007-01-24 21:07:463楼 得分:0
我这个是多表连接的     而且不能用视图。。。
能不能帮我改下。。。
感谢万分~~~
发表于:2007-01-24 21:17:184楼 得分:0
row_number()   这个是什么   ??
发表于:2007-01-24 21:23:195楼 得分:0
row_number()
为什么出现row_number()是不可识别的函数   我在sql2005帮助忠找到了这个介绍   但是查询的时候说为不可识别的函数??


快速检索

最新资讯
热门点击