知识在于积累(.NET之路……)

导航

一个经典的存储过程

代码
CREATE PROCEDURE [dbo].[PageGeneral]
(
@pagesize int,
@pageindex int,
@docount bit,
@TableName varchar(50), --表名
@Fields varchar(5000) = '*', --字段名(全部字段为*)
@OrderField varchar(5000), --排序字段(必须!支持多字段)
@sqlWhere varchar(5000) = Null --条件语句(不用加where

)
as

Declare @sql nvarchar(4000);

if(@docount=1)
begin
--计算总记录数

if (@SqlWhere='' or @sqlWhere=NULL)
set @sql = 'select count(*) from ' + @TableName
else
set @sql = 'select count(*) from ' + @TableName + ' where ' + @sqlWhere

Exec(@Sql)


end
else
begin

if (@SqlWhere='' or @sqlWhere=NULL)
set @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @OrderField + ') as rowId,' + @Fields + ' from ' + @TableName
else
set @sql = 'Select * FROM (select ROW_NUMBER() Over(order by ' + @OrderField + ') as rowId,' + @Fields + ' from ' + @TableName + ' where ' + @SqlWhere

set @Sql = @Sql + ') as ' + @TableName + ' where rowId between ' +Convert(varchar(50),(@pageindex-1)*@pagesize+1) + ' and ' + Convert(varchar(50),(@pageindex-1)*@pagesize+@pagesize)

Exec(@Sql)


end

posted on 2010-04-14 13:46  汤尼  阅读(166)  评论(0)    收藏  举报