因为扯淡的老师上课用了个扯淡的方法实现了个脑残的过程,根本没有实现动态。
非常不爽。于是自己研究。写了一个。
因为懒。懒的去把这东西封装成procedure或function。
有些细节和异常捕获也懒得去写了。比如数组的类型只用了varchar2(50).万一某个字段长度超过了50,就惨了。
基本过程如下,总之各种动态sql。
直接在sql*plus or PL/SQL development中跑就可以。
declare
pageSize number;
currentPage number;
row_count number;--表的总行数
firstRow number;--分页查询第一条
lastRow number;-- 分页查询最后一条
pageTotalNum number;--总页数
process number;--过程
cur_1 number;--游标
table_name varchar2(100);--输入的表名
column_num number;--列数
tmp_sql varchar2(500); --动态sql语句
get_count_sql varchar2(500);
get_column_num_sql varchar2(200);
n number;--计数
TYPE T_TAB is table of varchar2(50) index by binary_integer;--数组类型
my_array T_TAB;--数组
begin
table_name:=UPPER('&输入表名');
pageSize:=to_number('&输入每页条数');
currentPage:=to_number('&显示页');
dbms_output.put_line('输入表名:'||table_name||' ,每页条数:'||pageSize||'条'||' ,当前页:第'||currentPage||'页');
--表的总行数
get_count_sql:='select count(*) from '||table_name;
EXECUTE IMMEDIATE get_count_sql INTO row_count;
dbms_output.put_line(table_name||'表的总条数:'||row_count||'条');
--分页共多少页
pageTotalNum:=ceil(row_count/pageSize);
dbms_output.put_line('总共'||pageTotalNum||'页');
firstRow:=1+pageSize*(currentPage-1);
lastRow:=pageSize*currentPage;
if lastRow>row_count then
lastRow:=row_count;
end if;
dbms_output.put('当记录');
dbms_output.put_line('从 第'||firstRow||'条 到 第'||lastRow||'条');
--获取参数表的列数
--select count(*) from (select * from user_tab_columns where TABLE_NAME='&name');
--动态执行sql
get_column_num_sql:='select count(*) from '||'(select * from user_tab_columns where TABLE_NAME='''||table_name||''')';
EXECUTE IMMEDIATE get_column_num_sql INTO column_num; --获取列数
dbms_output.put_line(table_name||'表,共有'||column_num||'行');
--实现分页输出
--临时执行的sql
tmp_sql:='select tt.* from (select rownum as r_num, t.* from (select * from '||table_name||' ) t) tt where tt.r_num>='||firstRow||' and r_num<='||lastRow;
--动态游标
cur_1:=dbms_sql.open_cursor;
dbms_sql.parse(cur_1,tmp_sql,dbms_sql.native);
--定义游标的列
for n in 1..column_num+1 loop
my_array(n):='';
end loop;
for n in 1..column_num+1 loop
dbms_sql.define_column(cur_1,n,my_array(n),50);
end loop;
process:=dbms_sql.execute(cur_1);
loop
if dbms_sql.fetch_rows(cur_1)>0 then
for n in 1..column_num+1 loop
dbms_sql.column_value(cur_1,n,my_array(n));
dbms_output.put('......'||my_array(n));
end loop;
dbms_output.put_line('');
else
exit;
end if;
end loop;
end;
分享到:
相关推荐
此外,书中还涉及到了ORACLE数据库的安装、存储过程的编写、序列操作、数据类型转换、程序设计指导原则、合并数据库中的数据行(MERGE)、约束、索引、子查询、分页技术等高级主题。 最后,还有关于字符串、数值、...
Oracle PL/SQL是一种在Oracle数据库环境中使用的编程语言,它结合了SQL(结构化查询语言)的查询能力与过程式编程语言的功能。此培训课件旨在帮助开发人员掌握Oracle数据库的开发技能,特别是针对那些已经有SQL基础...
### PL/SQL 7.0中文使用说明 #### 一、概述 《PL/SQL Developer 7.0中文使用说明书》是一份详尽的技术文档,旨在帮助用户从安装配置到实际应用全面掌握PL/SQL Developer这款强大的Oracle客户端工具。本文档不仅...
**PL/SQL Developer**是一款专为Oracle数据库设计的集成开发环境(IDE),它极大地简化了PL/SQL语言的应用开发过程。这款软件提供了丰富的功能来帮助开发者高效地编写、调试、测试和优化PL/SQL代码。 #### 二、安装...
PL/SQL是Oracle数据库系统中的一个核心组件,全称为Procedural Language/Structured Query Language,即过程化结构查询语言。它是SQL的扩展,为数据库管理提供了更强大的编程能力,允许开发者编写存储过程、函数、...
此文以oracle数据库中的SCOTT用户的EMP表为例,用PL/SQL Developer编写一个分页存储过程,要求是:可以输入表名,每页显示记录数,当前页,返回总记录数,总页数和返回的结果集。 由于需要返回查询出来的结果集,...
在 Oracle PL/SQL 中,简单程序通常指的是基本的 SQL 查询语句,用于检索数据库中的数据。例如,根据特定条件筛选记录。 ##### 示例 - **查询薪资超过 1500 的员工信息**: ```sql SELECT * FROM emp WHERE sal >...
通过使用PL/SQL,开发者可以创建存储过程、函数、触发器等,并能在数据库内执行复杂的逻辑处理。 #### 三、书籍核心章节及知识点 ##### 第一部分:基础知识 - **PL/SQL基础语法**:包括变量声明、数据类型、流程...
Oracle PL/SQL是一种强大的编程语言,它将SQL与过程编程语言元素结合在一起,为数据库管理提供了丰富的功能。在Oracle数据库环境中,PL/SQL是开发高效、可靠和可维护的数据库应用的关键工具。以下是对给定文件中涉及...
2. **模块化设计**:通过PL/SQL,开发者可以创建存储过程,将复杂的业务逻辑封装成独立的模块,如分页、订单处理或转账等,使得代码更易于管理和维护。 3. **减少网络传输**:通过将大量操作集中在服务器端执行,...
总结来说,Oracle存储过程实现分页查询的关键在于动态构造SQL语句,结合ROWNUM或ROW_NUMBER()来实现分页。理解这一机制有助于我们在处理大量数据时编写高效、可复用的代码。在实际应用中,根据具体需求和数据库设计...
在Oracle数据库管理中,PL/SQL(Procedural Language/Structured Query Language)是Oracle提供的一种过程化语言,它结合了SQL的查询能力与程序设计语言的功能。本压缩包"利用PLSQL实现分页查询代码.rar"主要关注的...
orcale存储过程分页,在pl/sql developer环境下
标题中的“sql oracle bootstrap海量存储过程jquery分页”揭示了几个关键知识点,这些知识点主要集中在数据库操作、前端展示以及分页技术上。首先,我们来深入理解这些概念: 1. **Oracle**:Oracle是一种关系型...
### Java调用PL/SQL分页过程详解 #### 一、背景介绍 在现代软件开发中,Java 和数据库之间的交互非常频繁。对于大型系统来说,数据处理能力是至关重要的,尤其是在处理大量数据时,如何有效地分页显示这些数据是一...
2. 模块化设计:PL/SQL使得复杂的业务逻辑可以被封装成独立的模块,如分页过程、订单处理过程和转账过程,便于管理和维护。 3. 减少网络传输:将多次SQL操作合并为一次调用,降低了网络通信的开销。 4. 安全性:通过...