数据库用的是Oracle,Mybatis自动封装的分页,sql语句在PLSQL中执行没有问题,放在代码里面运行的时候就报错:未明确定义列。...通过log打印的sql语句拷出来执行,发现嵌套上分页就会报错。 问题原因:sql语句中有个列的别名重复,导致嵌套了分页后,数据库不能确定我们要的到底是哪个列,就会报未明确定义列。...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
CREATE PROC p_Team_GetTemaList @pageindex INT , @pagesize INT , @keywords VARCHAR(200) , --模糊查询...Where+' and City LIKE ''%'+CAST(@citycode AS VARCHAR(200))+'%''' END IF LEN(@keywords)>0 --模糊查询
--创建人:zengfanlong --创建时间:2014-7-28 10:51:15 --说明:根据公司简写代码获取当前待同步的气瓶档案数据(分页获取) ALTER PROCEDURE [UP_GasBottles_GetSyncData_ByPage...= 0 , @EndPageIndex INT = 0 , @TotalCount INT OUTPUT ) AS BEGIN --(1)、定义SQL...查询 SELECT * INTO #tempTb FROM dbo.GasBottles AS gs WITH ( NOLOCK )...) END ELSE BEGIN --分页获取数据
Declare @rowcount int Declare @intStart int Declare @intEnd int Declare @SQl...,N'@rowcount int output',@rowcount output if @PageIndex=0 and @PageSize=0 --不进行分页,查询所有数据列表 begin...set @SQl='SELECT * from '+cast(@TableName as nvarchar(3000))+' where 1=1 '+@Where end else --进行分页查询数据列表...='select * from(select *,ROW_NUMBER() OVER('+cast(@OrderBy as nvarchar)+') as row from ' set @SQl...+cast(@intEnd as varchar) end --print @SQl exec sp_executeSql @SQl --select @rowcount return @rowcount
在企业级项目开发中,分页查询,获取某一类数据的List列表,这一功能是最普遍也是最重要的功能。...其做法有很多种,例如ORM中自定义分页查询,一般情况下是拼接强类型的查询条件,然后转换成sql语句,查出出分页结果。在ORM转换过程中会稍微损失性能,效率会降低。...对于百万级以上的大数据量,要求查询界面显示速度快,此时手动写存储过程,并且在存储过程中分页是最佳选择。...DECLARE @RowEnd INT; --定义分页结束位置 DECLARE @Sql NVARCHAR(MAX); --拼接SQL语句 DECLARE @SqlSelectResult...EXEC (@Sql); END END GO SQL Server 2012 及以上版本使用OFFSET/FETCH NEXT实现分页查询效率更高 ,
, --指定当前为第几页 @TotalRecord int output --返回总记录数 ) AS BEGIN declare @sql...(@nPageCount - 1)) set @PageIndex = 0 set @StartRecord = (@PageIndex)*@PageSize --组织Sql...+@pageKeyField+' is null ' set @sql='select top '+str(@PageSize)+' '+@querySql+' from ' +@fromSql +'...+@pageKeyField+'='+@keyField +@whereSql2 +@orderBySql end else begin set @sql='select '+@...querySql+' from '+@fromSql+@whereSql+@orderBySql end Exec(@sql) END
usp_PagingLarge测试脚本: USE [Northwind] GO --SQL语句 SELECT Orders.OrderID , Products.ProductName...Order = N'Orders.OrderID desc,Products.ProductName asc' GO proc_ListPage测试脚本: USE [Northwind] GO --SQL
1 --分页 存储过程 案例 2 3 -- 所执行的存储过程 4 create proc pageForUsers 5 @currPage int,
:(利用Not In和SELECT TOP分页) 语句形式: SELECT TOP 10 * FROM TestTable WHERE (ID NOT IN (SELECT...:(利用SQL的游标存储过程分页) create procedure XiaoZhengGe @sqlstr nvarchar(4000), --查询字符串 @currentpage int, ...建议优化的时候,加上主键和索引,查询效率会提高。...通过SQL 查询分析器,显示比较:我的结论是: 分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句 分页方案一:(利用Not In和SELECT TOP分页) ...效率次之,需要拼接SQL语句 分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为通用 本文由来源 21aspnet,由 javajgs_com 整理编辑,其版权均为 21aspnet
–创建 create procedure FenYe @sqlstr nvarchar(4000), –查询字符串 @currentpage int, –第N页 @pagesize int –... output select @p1,@rowcount exec sp_cursorfetch @p1,16,1,20 exec sp_cursorclose @p1 这是个很经典的存储过程分页
存储过程与页面调用如下:CREATEPROCEDUREsearch_sp@tblNamevar 存储过程与页面调用如下: CREATE PROCEDURE...= 0, -- 返回记录总数, 非 0 值则返回 @OrderType bit = '', -- 设置排序类型, 非 0 值则降序 @strWhere varchar(1500) = '' -- 查询条件...from ['+ @tblName + '] '+ @strOrder --如果是第一页就执行以上代码,这样会加快执行速度 end else begin --以下代码赋予了@strSQL以真正执行的SQL
/*通用分页存储过程*/ USE HotelManagementSystem GO IF EXISTS(SELECT * FROM sys.objects WHERE NAME='cndoup_GetPageOfRecords...') DROP PROCEDURE cndoup_GetPageOfRecords GO --创建存储过程 CREATE PROCEDURE cndoup_GetPageOfRecords @pageSize...主键名称 AS BEGIN --存储过程开始...DECLARE @strTemp varchar(300) DECLARE @strSql varchar(5000) --该存储过程最后执行的语句...strOrderType+') AS TabTemp)'+@strOrderType END END EXEC (@strSql) END --存储过程结束
晚上花了1小时重写了MSSQL数据库中的分页存储过程,采用ROW_NUMBER的方式,需要MSSQL2005及以上版本支持。...为什么这么做,有两点: 第一:因为一直觉得采用TOP嵌套的方式太落后,尽管在程序中已经支持自定义View的方式读取分页,但是如果是单表的读取还是走存储过程,现在都MSSQL 2016了,MSSQL都支持...第二:原来用吉日嘎拉的存储过程,有个bug,第1页的最后一行记录还会重复显示在第2页的第一条。修复bug也是硬指标。 完整MSSQL分页存储过程sql脚本如下,拿去不谢。...== -- Author: Troy Cui 崔文远 -- Create date: 2012年03月08日 -- Update date: 2017年12月14日 -- Description: 分页存储过程...SET NOCOUNT ON 这样的话,在退出存储过程的时候加上 SET NOCOUNT OFF,以达到优化存储过程的目的。
Sql的三种分页查询方式 先说好吧,查询的数据排序,有两个地方(1、分页前的排序。...2、查询到当前页数据后的排序) 第一种 1、 先查询当前页码之前的所有数据id select top ((当前页数-1)*每页数据条数) id from 表名 2、再查询所有数据的前几条,但是id不在之前查出来的数据中...in (select top ((2-1)*5) id from wg_users order by 排序列名 desc) order by 排序列名 desc 这里的排序列名一定要用同一列,不然的话,分页查询就会查出重复数据或者少数据...,因为排序错乱的原因 第二种、ROW_NUMBER()分页 1、使用ROW_NUMBER()函数先给查询到的所有数据添加一列序号(就是给数据加一列1、2、3、4、5…这个,一定不要去掉后面起的那个别名【...–仅适用于SqlServer2012及以上版本(Offset and Fetch不仅可以用来分页,还有别的功能,不过我并不了解,分页方面也只是知道可以这么用) 1、这种分页相较于第二种来说,无论是性能还是语法
java实现mysql分页查询 1.前言 1.mysql中分页用limit,但是limit后面不能跟表达式 ,错误表达式:limit (1-1)*10,10。 2.对象中提供分页数据的方法。...* pageNo从1开始 */ private int startNum; /** * 设置分页查询数据 */ public void setPageQuery() {...(this.getPageNo() - 1) * this.getPageSize() : 0; } 在调用sql前,设置分页数据:model.setPageQuery(); 备注:该对象继承了...Mybatis–Mapping.xml mapping.xml中的分页查询sql: 主要看这段,pageNo>0表示是分页查询,不是全量查询。...分页对象写成以下两种,并在调用处去掉model.setPageQuery(); /** * 当前页,需要查询的页数 * pageNo从1开始 */ private int startNum
Mybatis分页查询(通过SQL分页实现) 前言 实现有哪几种方式: 网页分页 (一次查询所有数据,加载到网页,那么适合数量小的操作) 服务器端分页 java程序中查询所有数据,网页需要哪一页...,就给哪一页数据,会撑爆java服务器,建议查询缓存优化 数据库分页 请求一页数据,查询数据库即可 本文采用Oracle中的rownum实现分页,数据表使用Oracle中Scott的EMP表...* @return */ public Integer selectSize(); /** * 分页查询 * @param pageUtil * @return */ public List分页查询 * @param pageUtil * @return */ --> <select id="selectEmpByPage" parameterType..., size, 5); //分页查询 List list=mapper.selectEmpByPage(pageUtil); System.out.println(list.toString
我个人认为最好的分页方法是:Selecttop10*fromtablewherei 1。...我个人认为最好的分页方法是: Select top 10 * from table where id>200 写成存储过程,上面的语句要拼一下sql语句,要获得最后大于的哪一个ID号 2。...那个用游标的方式,只适合于小数据量的表,如果表在一万行以上,就差劲了 你的存储过程还比不上NOT IN分页,示例: SELECT Top 10 * FROM Customers WHERE Customerid...用临时表自定义分页和使用游标自定义分页都不好!
create or replace package mypack 2 as 3 type emp_cursor is ref cursor; 4 end mypack; 分页存储过程...; v_sql:='select count(*) from '||v_in_tableName; --将执行结果写入v_out_myRows execute immediate v_sql...存储过程; public static void main(String[] args) { Connection conn=null; CallableStatement...DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORA","scott","tiger"); //调用存储过程...DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORA","scott","tiger"); //调用存储过程
Mybatis可以使用RowBounds进行分页 dao层 sql的xml文件,因为是java层面的分页,所以sql不需要分页 单元测试 因为参数是第几个开始,这样很不友好...,我们一般情况分页是第几页开始,页大小是多少,所以这就需要我们自己封装一层分页对象 package com.lingaolu.utils; import org.apache.ibatis.session.RowBounds...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快。...存储过程的优点 1、存储过程允许标准组件式编程 存储过程创建后可以在程序中被多次调用执行,而不必重新编写该存储过程的SQL语句。...因为存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化,并给出最终被存在系统表中的存储计划。而批处理的T-SQL语句每次运行都需要预编译和优化,所以速度就要慢一些。...3、存储过程减轻网络流量 对于同一个针对数据库对象的操作,如果这一操作所涉及到的T-SQL语句被组织成一存储过程,那么当在客户机上调用该存储过程时,网络中传递的只是该调用语句,否则将会是多条SQL语句。...系统存储过程 系统存储过程是系统创建的存储过程,目的在于能够方便的从系统表中查询信息或完成与更新数据库表相关的管理任务或其他的系统管理任务。
领取专属 10元无门槛券
手把手带您无忧上云