帮忙写个分页模糊查询存储过程.

来源:百度知道 编辑:UC知道 时间:2024/05/22 14:01:53
我要实现的方法IList<Storage> QueryStorages(string proName,
string warehouse,int pageNo,int pageSize)
proName 产品,
warehouse 仓库,
pageNo 当前页编号,
pageSize 页大小

创建存储过程名称"Proc_QueryStorages"
页面调用的时候直接返回SqlDataReader

其实我也试过拼凑来实现,但那个效果不是很理想。
有思路的高手帮忙写下。

CREATE PROCEDURE sp_Paginate
(
@PageSize INT,--每页的容量,返回记录数小于等于这个值
@PageIndex INT,--页码
@ColumnList VARCHAR(1000),--结果集的列名列表,全部列可以用*,列名之间用,隔开
@Table VARCHAR(128),--这里可以是表名(在单表数据分页时),也可以是视图(在多表数据分页时)
@KeyColumn VARCHAR(128),--主键列名称,这里的主键列只能是单列,不能是多列
@SearchText VARCHAR(2000),--查找的字符,可以用空格分开,实现多关键字查询功能
@SearchColumn VARCHAR(640)--查找的列名,可以用+ '' '' +连接多个列名,意为在多个列中查询
)
AS

DECLARE @Condition VARCHAR(4000)
SET @Condition=dbo.fn_CreateCondition(@SearchText,@SearchColumn)--使用dbo.fn_CreateCondition函数获取空格分开的多关键字查询的条件

DECLARE @SQL VARCHAR(8000)
--生成执行语句
SET @SQL='SELECT TOP ' +CONVERT (VARCHAR(10),@PageSize)
SET @SQL=@SQL+' '+@ColumnList
SET @SQL=@SQL+' FROM'
SET @SQL=@SQL+' ['+@Table+']'
SET @SQL=@SQL+' WHERE'
SET @SQL=@SQL+' ['+@KeyColumn + '] NOT IN'