多表联合查询sql存储过程带分页
来源:互联网 发布:linux查看硬盘个数 编辑:程序博客网 时间:2024/05/20 18:45
note:分页可能不是特别好,把搜索的结果插入到临时表里面,然后再进行分页,感觉速度会慢,但是不知道怎么解决
sql代码:
USE [opussys_db]GO/****** Object: StoredProcedure [dbo].[proc_DataSearch] Script Date: 2015-03-04 14:52:05 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author:<Mofijeck>-- Create date: <2015-03-04>-- Description:<三张表联合搜索>-- =============================================ALTER PROCEDURE [dbo].[proc_DataSearch]-- Add the parameters for the stored procedure here(@words nvarchar(200) ,@type int ,@startIndex int ,@endIndex int)ASBEGIN-- SET NOCOUNT ON added to prevent extra result sets from-- interfering with SELECT statements.create table #Tmp --创建临时表#Tmp ( ID int IDENTITY (1,1) not null, --创建列ID,并且每次新增一条记录就会加1 searchid int, updateTime datetime, stype int, primary key (ID) --定义ID为临时表#Tmp的主键 )truncate table #Tmpif @type=0begin--新闻insert into #Tmp select id,creattime,1 from table1 where col like '%'+rtrim(@words)+'%'--end--作家insert into #Tmpselect id,creattime,2 from table2 where col like '%'+rtrim(@words)+'%'--end--作品insert into #Tmpselect id,creattime,3 from table3 where col like '%'+rtrim(@words)+'%' --endendif @type=1begin--新闻insert into #Tmp select id,creattime,@type from table1 where col like '%'+rtrim(@words)+'%'endif @type=2begin--作家insert into #Tmpselect id,creatTime,@type from table2 where col like '%'+rtrim(@words)+'%'endif @type=3begin--作品insert into #Tmpselect id,creattime,@type from table3 where col like '%'+rtrim(@words)+'%'end--返回结果SELECT * FROM ( SELECT ROW_NUMBER() OVER ( order by T.updateTime desc ) AS Row, T.* from #Tmp T) as TT where TT.Row between @startIndex and @endIndex--计算记录数 declare @count int select @count=count(ID) from #Tmp return @count -- Insert statements for procedure hereEND
C#获取返回结果值和结果集:
#region /// <summary> /// /// </summary> /// <param name="words">关键词 </param> /// <param name="type"></param> /// <returns></returns> public static DataSet searchByWords(string words, int type,int startIndex,int endIndex) { IDataParameter[] parameter ={ new SqlParameter("@words",SqlDbType.NVarChar,200), new SqlParameter("@type",SqlDbType.Int,4), new SqlParameter("@startIndex",SqlDbType.Int,4), new SqlParameter("@endIndex",SqlDbType.Int,4) }; parameter[0].Value = words; parameter[1].Value = type; parameter[2].Value = startIndex; parameter[3].Value = endIndex; DataSet ds = DbHelperSQL.RunProcedure("proc_DataSearch", parameter, "search"); return ds; } /// <summary> /// 返回结果 /// </summary> /// <param name="words"></param> /// <param name="type"></param> /// <returns></returns> public static int searchByWordsCount(string words, int type, int startIndex, int endIndex) { IDataParameter[] parameter ={ new SqlParameter("@words",SqlDbType.NVarChar,200), new SqlParameter("@type",SqlDbType.Int,4), new SqlParameter("@startIndex",SqlDbType.Int,4), new SqlParameter("@endIndex",SqlDbType.Int,4) }; parameter[0].Value = words; parameter[1].Value = type; parameter[2].Value = startIndex; parameter[3].Value = endIndex; int results = 0; int returnCount = DbHelperSQL.RunProcedure("proc_DataSearch", parameter, out results); return returnCount; } #endregion
0 0
- 多表联合查询sql存储过程带分页
- 又一个通用分页存储过程,支持表别名,多表联合查询SQL语句
- 又一个通用分页存储过程,支持表别名,多表联合查询SQL语句--转载
- 高级自定义查询、分页、多表联合存储过程
- 数据库分页存储过程,支持多表联合查询
- 【MySql-多表联合查询分页存储过程】
- [MSSQL]SQL通用存储过程分页,支持多表联合
- 分页存储过程支持多表联合
- 联合表 分页存储过程
- SQL分页查询(存储过程)
- SQL--分页查询 存储过程
- SQL 分页查询 存储过程
- sql存储过程分页查询
- sql 存储过程分页查询
- Linq To SQL通用分页存储过程二个,支持多表联合.
- 分页带查询的存储过程示例
- 条件查询存储过程,带分页
- SQL server2008 多表联合查询,分页显示结果
- Android实现元素间的分割线 android:divider=""(3.0以上特性)支持3.0以下
- 转jstl的一些用法
- IAR修改工程名称的方法
- 黑马程序员--08 OC 核心语法
- 欢迎使用CSDN-markdown编辑器1
- 多表联合查询sql存储过程带分页
- 异常机制第三十五课,常见异常分类,异常简单处理
- 普通DLL工程创建过程(开发工具vs2010)
- 【计算机视觉】OpenCV人脸识别facerec源码分析2——LBPH概述
- Java复习--多线程的同步
- 安装MySQL服务
- 网页图表插件 ECharts
- 黑马程序员--09 OC 内存管理
- python输出重定向到stderr