search
HomeDatabaseMysql Tutorialoracle中使用触发器实现查询分页功能

oracle中使用触发器实现查询分页功能

Jun 07, 2016 pm 04:21 PM
oracleusePaginationFunctionaccomplishInquiretrigger

oracle包分为包规范和包体 一:首先创建包规范 create or replace package p_pagewithgroup is -- Author : 肖伟 -- Created : 2014/3/18 -- Purpose : 分组分页过程 TYPE type_cur IS REF CURSOR; --定义游标变量用于返回记录集 PROCEDURE UP_GetRecordWith

   oracle包分为包规范和包体

  一:首先创建包规范

  create or replace package p_pagewithgroup is

  -- Author : 肖伟

  -- Created : 2014/3/18

  -- Purpose : 分组分页过程

  TYPE type_cur IS REF CURSOR; --定义游标变量用于返回记录集

  PROCEDURE UP_GetRecordWithGroupByPage(

  tblName in varchar2, --表名

  PageSize in number, --页面大小

  PageIndex in number, --当前页

  IsReCount out number,--返回总条数

  strWhere in varchar2,-- 查询条件 (注意: 不要加 where)

  strColums in varchar2, --字段集合,逗号分割

  strSelectColums in varchar2, --字段集合,逗号分割

  strGroup in varchar2,--分组条件语句

  strOrder in varchar2,-- 排序条件语句

  v_cur out type_cur --返回当前页数据记录

  );

  end p_pagewithgroup;

  二:创建包结构体

  create or replace package body p_pagewithgroup is

  PROCEDURE UP_GetRecordWithGroupByPage(

  tblName in varchar2, --表名

  PageSize in number, --页面大小

  PageIndex in number, --当前页

  IsReCount out number,--返回总条数

  strWhere in varchar2,-- 查询条件 (注意: 不要加 where)

  strColums in varchar2, --字段集合,逗号分割

  strSelectColums in varchar2, --字段集合,逗号分割

  strGroup in varchar2,--分组条件语句

  strOrder in varchar2,-- 排序条件语句

  v_cur out type_cur --返回当前页数据记录

  )

  AS

  --定义变量

  v_sql VARCHAR2(8000);

  v_count number;

  v_row_start NUMBER; --开始记录

  v_row_end NUMBER; --结束记录

  begin

  ------------------------------------------------------------显示总条数

  v_sql := 'select count(1) from ' || tblName;

  IF strWhere is not NULL OR strWhere ''

  THEN

  v_sql := v_sql || ' where ' || strWhere;

  END IF;

  IF strGroup is not null or strGroup ''

  then

  v_sql := v_sql || ' group by ' || strGroup;

  end if;

  DBMS_OUTPUT.put_line (v_sql);

  --v_sql:='select count(1) from BS_USER where 1=1';

  EXECUTE IMMEDIATE v_sql into v_count ;

  IsReCount:=v_count;

  ------------------------------------------------------------显示任意页内容

  -- IF PageSize

  -- PageSize:=1;

  -- END IF;

  v_row_start := (PageIndex - 1) * PageSize + 1;

  v_row_end := PageIndex * PageSize;

  v_sql:='select '||strSelectColums||' from (select t.*,RowNum as rn from (select '||strColums||' from '||tblName;

  IF strWhere is not NULL OR strWhere ''

  THEN

  v_sql := v_sql || ' where ' || strWhere;

  END IF;

  IF strGroup is not null or strGroup ''

  then

  v_sql := v_sql || ' group by ' || strGroup;

  end if;

  IF strOrder is not null or strOrder ''

  then

  v_sql := v_sql || ' order by ' || strOrder;

  end if;

  v_sql := v_sql ||') t) where rn between '||v_row_start||' and '||v_row_end;

  DBMS_OUTPUT.put_line (v_sql);

  open v_cur for v_sql;

  End UP_GetRecordWithGroupByPage;

  ----------------------------------------------------------

  end p_pagewithgroup;

  三:测试

  首先打开PL/SQL command window

  SQL>declare

  -- Local variables here

  IsReCount number;--返回总条数

  my_cur p_pagewithgroup.type_cur ; --返回当前页数据记录

  begin

  -- Test statements here

  p_pagewithgroup.UP_GetRecordWithGroupByPage('T_DIVISION',5,1,ISReCount,' 1=1 ',' * ',' * ',null,null,my_cur );

  DBMS_OUTPUT.PUT_LINE(TO_CHAR(IsReCount));

  end;

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
MySQL: BLOB and other no-sql storage, what are the differences?MySQL: BLOB and other no-sql storage, what are the differences?May 13, 2025 am 12:14 AM

MySQL'sBLOBissuitableforstoringbinarydatawithinarelationaldatabase,whileNoSQLoptionslikeMongoDB,Redis,andCassandraofferflexible,scalablesolutionsforunstructureddata.BLOBissimplerbutcanslowdownperformancewithlargedata;NoSQLprovidesbetterscalabilityand

MySQL Add User: Syntax, Options, and Security Best PracticesMySQL Add User: Syntax, Options, and Security Best PracticesMay 13, 2025 am 12:12 AM

ToaddauserinMySQL,use:CREATEUSER'username'@'host'IDENTIFIEDBY'password';Here'showtodoitsecurely:1)Choosethehostcarefullytocontrolaccess.2)SetresourcelimitswithoptionslikeMAX_QUERIES_PER_HOUR.3)Usestrong,uniquepasswords.4)EnforceSSL/TLSconnectionswith

MySQL: How to avoid String Data Types common mistakes?MySQL: How to avoid String Data Types common mistakes?May 13, 2025 am 12:09 AM

ToavoidcommonmistakeswithstringdatatypesinMySQL,understandstringtypenuances,choosetherighttype,andmanageencodingandcollationsettingseffectively.1)UseCHARforfixed-lengthstrings,VARCHARforvariable-length,andTEXT/BLOBforlargerdata.2)Setcorrectcharacters

MySQL: String Data Types and ENUMs?MySQL: String Data Types and ENUMs?May 13, 2025 am 12:05 AM

MySQloffersechar, Varchar, text, Anddenumforstringdata.usecharforfixed-Lengthstrings, VarcharerForvariable-Length, text forlarger text, AndenumforenforcingdataAntegritywithaetofvalues.

MySQL BLOB: how to optimize BLOBs requestsMySQL BLOB: how to optimize BLOBs requestsMay 13, 2025 am 12:03 AM

Optimizing MySQLBLOB requests can be done through the following strategies: 1. Reduce the frequency of BLOB query, use independent requests or delay loading; 2. Select the appropriate BLOB type (such as TINYBLOB); 3. Separate the BLOB data into separate tables; 4. Compress the BLOB data at the application layer; 5. Index the BLOB metadata. These methods can effectively improve performance by combining monitoring, caching and data sharding in actual applications.

Adding Users to MySQL: The Complete TutorialAdding Users to MySQL: The Complete TutorialMay 12, 2025 am 12:14 AM

Mastering the method of adding MySQL users is crucial for database administrators and developers because it ensures the security and access control of the database. 1) Create a new user using the CREATEUSER command, 2) Assign permissions through the GRANT command, 3) Use FLUSHPRIVILEGES to ensure permissions take effect, 4) Regularly audit and clean user accounts to maintain performance and security.

Mastering MySQL String Data Types: VARCHAR vs. TEXT vs. CHARMastering MySQL String Data Types: VARCHAR vs. TEXT vs. CHARMay 12, 2025 am 12:12 AM

ChooseCHARforfixed-lengthdata,VARCHARforvariable-lengthdata,andTEXTforlargetextfields.1)CHARisefficientforconsistent-lengthdatalikecodes.2)VARCHARsuitsvariable-lengthdatalikenames,balancingflexibilityandperformance.3)TEXTisidealforlargetextslikeartic

MySQL: String Data Types and Indexing: Best PracticesMySQL: String Data Types and Indexing: Best PracticesMay 12, 2025 am 12:11 AM

Best practices for handling string data types and indexes in MySQL include: 1) Selecting the appropriate string type, such as CHAR for fixed length, VARCHAR for variable length, and TEXT for large text; 2) Be cautious in indexing, avoid over-indexing, and create indexes for common queries; 3) Use prefix indexes and full-text indexes to optimize long string searches; 4) Regularly monitor and optimize indexes to keep indexes small and efficient. Through these methods, we can balance read and write performance and improve database efficiency.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.