使用MVC,实现多条件查询,排序与分页 的 存储过程
来源:互联网 发布:数据质量控制 编辑:程序博客网 时间:2024/05/17 09:05
USE [UshareDB]
GO
/****** Object: StoredProcedure [dbo].[GetD_ProjectInfoCollectionForPagingJSSS] Script Date: 07/16/2014 18:19:46 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[GetD_ProjectInfoCollectionForPagingJSSS]
(
@PageIndex int, ----当前的页码
@PageSize int, ----每页显示多少条
@RecordCount int output,----总条数
@PageCount int output , ----总页数
@FileTypeID varchar(4000),-------文件类型编号
@ProjectState varchar(4000),----交易状态
@StrSeach varchar(4000),------搜索条件
----------排序标示: 0 无排序,1 升序 ,2 降序
@OrderNum char(1),--------按照数量排序的标示
@OrderMoney char(1),------按照金额排序的标示
@OrderCreate char(1),-----按照交易时间排序的标示
@OrderDiff char(1)----按照剩余时间排序的标示
)
as
begin
declare @JPWhere varchar(4000)----条件字符串
declare @JPBy varchar(4000) ----排序字符串
declare @val varchar(5000)----定义一个参数用来接收T-SQL语句
declare @Num char(4)------记录按照数量排序的标示
declare @Money char(4)----记录按照交易金额排序的标示
declare @Create char(4)---记录按照时间排序的标示
declare @Diff char(4)---记录按照剩余时间排序的标示
set @Create='desc' ---默认情况下是按照时间降序的
-----初次或者没有条件筛选,加载所有信息
IF(@FileTypeID='0' and @ProjectState='0' and (@StrSeach=''or @StrSeach is null ) and @OrderNum='0' and @OrderMoney='0' and @OrderCreate='0' and @OrderDiff='0')
begin
--set @WhereBy=' order by p.CreateTime desc '
set @JPWhere='and 1=1 '
set @JPBy=' order by p.CreateTime desc '
--print @WhereBy
end
-----有条件进行筛选
else
begin
set @JPWhere=''
set @JPBy=' order by p.CreateTime desc '
if(@FileTypeID!='0')--按照类别查询
begin
set @JPWhere=' and ProjectType ='+@FileTypeID
end
if(@ProjectState!='0')--按照状态查询
begin
set @JPWhere=@JPWhere+' and BusinessStatus='+@ProjectState
end
if(@StrSeach!='')---模糊查询
begin
set @JPWhere=@JPWhere+' and ProjectCode like '''+ @StrSeach+'%''' +' or ProjectName like'''+@StrSeach+'%'''
end
--set @WhereBy=@WhereBy+' order by '
if(@OrderNum='1')---按照数量排序
begin
set @JPBy=' order by im.ImageCount asc '
--set @Num='asc'
end
if(@OrderNum='2')
begin
set @JPBy=' order by im.ImageCount desc '
--set @Num='desc'
end
if(@OrderMoney='1')---按照金额排序
begin
set @JPBy=' order by BusinessAmount asc '
--set @Money='asc'
end
if(@OrderMoney='2')
begin
set @JPBy=' order by BusinessAmount desc '
--set @Money='desc'
end
if(@OrderCreate='1')---按照时间排序
begin
set @JPBy=' order by p.CreateTime asc'
--set @Create='asc'
end
if(@OrderCreate='2')
begin
set @JPBy=' order by p.CreateTime desc'
-- set @Create='desc'
end
if(@OrderDiff='1')---按照剩余时间排序
begin
set @JPBy=' order by DATEDIFF(HH,p.CreateTime,FinishDate) asc'
--set @Diff='asc'
end
if(@OrderDiff='2')
begin
set @JPBy=' order by DATEDIFF(HH,p.CreateTime,FinishDate) desc'
--set @Diff='desc'
end
--if(SUBSTRING(@WhereBy,LEN(@WhereBy)-1,2)='by')---没有排序,按照时间排序
--begin
--set @WhereBy =@WhereBy+' p.CreateTime desc '
--end
--if(SUBSTRING(@WhereBy,LEN(@WhereBy),1)=',')---最后一位是,去除,
--begin
--set @WhereBy=SUBSTRING(@WhereBy,1,len(@WhereBy)-1)
--end
end
----要执行的T-SQL语句,赋值给val,并把查询的数据集赋值给一个全局临时表##jptemp
--order by im.ImageCount ' +@Num+ ', BusinessAmount '+@Money+ ',p.CreateTime '+@Create+ ' ,DATEDIFF(HH,p.CreateTime,FinishDate) '+@Diff+ ')
set @val= 'select ROW_NUMBER() over(' +@JPBy+ ') rowNumber, ProjectCode,ProjectName,ProjectType,im.ImageCount,custor.CustomerName SellName,cust.CustomerName BuyName,BusinessAmount,p.CreateTime,DATEDIFF(HH,p.CreateTime,FinishDate) '
+' Diff,BusinessStatus,IsDeleted into ##jptemp from D_ProjectInfo p '
+' left join (select ProjectID,COUNT(*) ImageCount from D_ProjectImageInfo where IsDeleted=0 or IsDeleted is null group by ProjectID) im'
+' on p.ProjectID=im.ProjectID left join E_CustomerInfo custor on p.Seller=custor.CustomerID '
+' left join E_CustomerInfo cust on p.CreatorID=cust.CustomerID '
+' where (p.IsDeleted=0 or p.IsDeleted is null) ' + @JPWhere+@JPBy
-----执行这条拼接的字符串
exec(@val)
print (@val)
----执行过以后,会创建出来一张全局表##temp(里面包含所有的条件过滤后的数据)
----查询出来总共的记录数
select @RecordCount = COUNT(1) from ##jptemp
----查询出来总共的页数
SET @PageCount = CEILING(@RecordCount * 1.0 / @PageSize)
----对查询的数据集进行分页
select jp.ProjectCode,jp.ProjectName,jp.BusinessAmount,jp.CreateTime,jp.BusinessStatus,jp.ProjectType,
CONVERT(nvarchar,isnull(jp.ImageCount,0))+';'+isnull(jp.SellName,'')+';'+isnull(jp.BuyName,0)+';'+Convert(nvarchar,isnull(jp.Diff,0)) Remark
from ##jptemp jp where jp.rowNumber between @PageIndex*@PageSize+1 and (@PageIndex+1)*@PageSize
----删除这张表
drop table ##jptemp
end
- 使用MVC,实现多条件查询,排序与分页 的 存储过程
- MVC调用存储过程实现分页,带查询条件
- Oracle多条件查询分页存储过程
- SqlServer分页存储过程(多表查询,多条件排序),Repeater控件呈现数据以及分页
- 使用一个存储过程实现多条件查询
- 多查询条件的MVC分页
- 分页存储过程,可将查询条件作为参数传递的分页查询存储过程
- 分页存储过程 UP_GetRecordByPageOrder 多条件查询 错误
- 条件查询存储过程,带分页
- EF实现分页查询+条件查询+排序
- 多条件分页存储过程
- c#调用多个可选条件查询的分页存储过程
- 存储过程实现分页查询
- Sql Server 编写多条件查询语句的存储过程--包含语法错误的存储过程与正确存储过程
- 万能分页存储过程(带第一页性能优化,任意条件查询,任意字段排序)
- SQLServer存储过程实现单条件分页
- 多表查询的存储过程分页
- 存储过程多条件查询
- Qt编写Android程序中添加XML配置文件
- 福州大学第十一届程序设计竞赛E fzuoj2171(线段树)
- [问题]duplicate symbols for architecture armv7
- destoon 企业管理中心发信息时,模板的位置
- HTML5是如何使用鼠标滚轮事件的
- 使用MVC,实现多条件查询,排序与分页 的 存储过程
- 网页中插入背景音乐的几种方法
- 7.16_java学习_数组
- js运动练习
- springmvc和struts2的差别相关内容
- uva 10014(数学)
- 手机摇一摇功能音量大小跟系统音量一致
- orm db config
- hdu 1556 树状数组