- 浏览: 173507 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
SanFrans:
很不错的资料,谢谢分享
Oracle EBS 常用表 查询语句 -
Vity:
楼主坚持下去
Android学习指南基础--第一讲:Android开发环境的搭建【附件有图】 -
拥抱变化之美:
楼主的治学精神值得称赞。
C# 4.0 并行计算部分(附件有图) -
overloving:
fangjindan 写道
这个是绝对可行的哈,我测试通 ...
Linux下Oracle存储过程调用Java程序(含外部包) -
fangjindan:
Linux下Oracle存储过程调用Java程序(含外部包)
--######################################-- --游标 --王林 2012.07.06 --######################################-- /* 游标的作用就是用于临时存储从数据库中提取的数据块。在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处理结果显示出来或最终写回数据库。这样数据处理的速度才会提高,否则频繁的磁盘数据交换会降低效率。 游标有两种类型:显式游标和隐式游标。在前述程序中用到的SELECT...INTO...查询语句,一次只能从数据库中提取一行数据,对于这种形式的查询和DML操作,系统都会使用一个隐式游标。但是如果要提取多行数据,就要由程序员定义一个显式游标,并通过与游标有关的语句进行处理。显式游标对应一个返回结果为多行多列的SELECT语句。 游标一旦打开,数据就从数据库中传送到游标变量中,然后应用程序再从游标变量中分解出需要的数据,并进行处理。 对游标的操作包含四个部分:定义、打开、读取、关闭。 */ --######################################-- --准备练习用表 CREATE TABLE wl_emp AS SELECT * FROM scott.emp; -- SELECT * FROM wl_emp; --######################################-- --一般游标 CREATE OR REPLACE PROCEDURE promotion_review_1 IS nemployeeid NUMBER; dstartdate DATE; denddate DATE; sjobid VARCHAR2 (20); CURSOR cselectjob IS SELECT a.empno , a.hiredate , a.hiredate , a.job FROM wl_emp a; BEGIN OPEN cselectjob; LOOP FETCH cselectjob INTO nemployeeid , dstartdate , denddate , sjobid ; EXIT WHEN cselectjob%NOTFOUND; DBMS_OUTPUT.put_line( 'Employee ' || nemployeeid || ' has job ' || sjobid || ' for ' || (denddate - dstartdate) || ' days.' ); END LOOP; CLOSE cselectjob; END; --######################################-- --FOR游标 CREATE OR REPLACE PROCEDURE promotion_review_2 IS CURSOR cselectjob IS SELECT a.empno , a.hiredate dstartdate , a.hiredate denddate , a.job FROM wl_emp a; BEGIN FOR jh_rec IN cselectjob LOOP DBMS_OUTPUT.put_line( 'Employee ' || jh_rec.empno || ' had job ' || jh_rec.job || ' for ' || (jh_rec.dstartdate - jh_rec.denddate) || ' days.' ); END LOOP; END; --######################################-- --隐式游标 /* 隐式游标的%ISOPEN属性始终为FALSE,因为没有打开显示游标。为了访问隐式游标的属性可以使用SQL%attribute引用最近执行的隐式游标。 任何执行块或异常块中的DML语句都是隐式游标。它包括INSERT、UPDATE和DELETE语句。 在组合使用SELECT语句与INTO或BULK COLLECT INTO语句,或是在游标FOR循环语句中潜入SELECT语句时,也可以创建隐式游标。 PL/SQL块中的每条SQL语句实际上都是隐式游标。通过DML主句后使用%ROWCOUNT特性,可知道任何语句所改变的行数。 也可以对SELECT语句查询返回的行数。 */ CREATE OR REPLACE PROCEDURE promotion_review_3 IS nempno NUMBER; CURSOR cselectjob IS SELECT a.empno , a.hiredate dstartdate , (a.hiredate + 1) denddate , a.job FROM wl_emp a; BEGIN SELECT COUNT(*) INTO nempno FROM wl_emp; DBMS_OUTPUT.put_line( 'There are ' || nempno || ' employee history records.' ); FOR jh_rec IN cselectjob LOOP DBMS_OUTPUT.put_line( 'Employee ' || jh_rec.empno || ' had job ' || jh_rec.job || ' for ' || (jh_rec.denddate - jh_rec.dstartdate) || ' days.' ); END LOOP; END; --######################################-- --REF游标 --动态显式游标 CREATE OR REPLACE PROCEDURE demo IS --局部变量的名称不能和列名相同,否则列名值会被替换而不是变量值。 n_low_no NUMBER := 7369; n_high_no NUMBER := 7654; emp_rec VARCHAR2(20); CURSOR c_selt_name IS SELECT a.ename FROM scott.emp a WHERE a.empno BETWEEN n_low_no AND n_high_no; BEGIN OPEN c_selt_name; LOOP FETCH c_selt_name INTO emp_rec; EXIT WHEN c_selt_name%NOTFOUND; DBMS_OUTPUT.put_line(emp_rec); END LOOP; END demo; --使用输入参数 CREATE OR REPLACE PROCEDURE demo IS n_low_no NUMBER; n_high_no NUMBER; emp_rec VARCHAR2(20); CURSOR c_selt_name IS SELECT a.ename FROM scott.emp a WHERE a.empno BETWEEN n_low_no AND n_high_no; BEGIN --将程序改变为使用输入参数。 n_low_no := TO_NUMBER(NVL(&1,7364)); n_high_no := TO_NUMBER(NVL(&2,7655)); OPEN c_selt_name; LOOP FETCH c_selt_name INTO emp_rec; EXIT WHEN c_selt_name%NOTFOUND; DBMS_OUTPUT.put_line(emp_rec); END LOOP; END demo; --使用形式参数 CREATE OR REPLACE PROCEDURE demo IS n_low_no NUMBER; n_high_no NUMBER; emp_rec VARCHAR2(20); --游标中的这些变量没有物理大小,因为他们在运行时获得。 CURSOR c_selt_name(low_id NUMBER , high_id NUMBER) IS --SELECT语句中的变量不再是局部变量,他们是游标的局部变量,由游标定义中的形式参数定义。 SELECT a.ename FROM scott.emp a WHERE a.empno BETWEEN low_id AND high_id; BEGIN --在程序运行的时候,输入&1和&2分别赋值给局部变量n_low_no和n_high_no。 n_low_no := TO_NUMBER(NVL(&1,7364)); n_high_no := TO_NUMBER(NVL(&2,7655)); --局部变量成为打开游标时传递的实参,然后将实参赋给游标作用域的变量low_id和high_id。 OPEN c_selt_name (n_low_no , n_high_no); LOOP FETCH c_selt_name INTO emp_rec; EXIT WHEN c_selt_name%NOTFOUND; DBMS_OUTPUT.put_line(emp_rec); END LOOP; END demo;
发表评论
-
Oracle 基本建表语句
2012-11-15 14:12 2157--创建用户 create user han identifi ... -
Oracle EBS Item Import 物料导入 (2) 源代码 成功执行
2012-08-24 10:56 5470CREATE OR REPLACE PACKAGE PkgIm ... -
Oracle 体系结构
2012-08-20 17:29 927数据库(Database) 数据库是一个数据的集合,不仅 ... -
instr()函数,特殊用法,代替like,in
2012-08-20 17:19 5345--created by : wanglin --cre ... -
Oracle PL/SQL 常用函数总结
2012-08-20 14:02 1595--created by : wanglin --cre ... -
MERGE 使用例子
2012-08-17 17:01 1049--MERGE <Usage Case> --P ... -
内存表使用
2012-08-16 16:46 1681一、 内存表概念 1、PL/SQL表类似于C语言中的 ... -
临时表的使用方法
2012-08-16 15:48 1584临时表的使用方法: 创建 Oracle 临 ... -
Oracle EBS 二次开发 FND_GLOBAL PACKAGE 返回全局变量
2012-08-10 10:52 2947这个包,可以应用于你的 PL/SQL 中! 这个包 ... -
如何定义一个简单的Concurrent Program
2012-08-09 15:08 994Oracle Apps R12下如何定义一个简单的Hello ... -
SQL Loader 导入Excel数据到Oracle数据库
2012-08-09 08:48 16231、 将需要上传的数据在Excel中整理好,通过“另存为 ... -
Oracle EBS 常用表 查询语句
2012-07-24 11:29 26682ORACLE EBS常用表查询语句 1. ... -
aaa
2012-07-13 14:25 0sdsdfas > http:/ ... -
Oracle_PL_ SQL_ 教程:函数
2012-07-12 21:32 1144--############################# ... -
Oracle_PL_ SQL_ 教程:包
2012-07-12 21:30 980--############################# ... -
Oracle_PL_ SQL_ 教程:错误和异常
2012-07-13 08:44 7692--############################# ... -
Oracle_PL_ SQL_ 教程:控制语句(条件语句、循环语句)
2012-07-12 21:27 978--############################# ... -
Linux下Oracle存储过程调用Java程序(含外部包)
2012-07-13 10:03 6741一、描述: 用Java编写了一个导入Excel数 ... -
Oracle_PL_ SQL_ 教程:存储过程
2012-07-11 23:19 2961--############################# ... -
Oracle存储过程中调用JAVA程序【转载】
2012-07-11 23:00 1085Oracle存储过程中调用JAVA程序 软件环境 ...
相关推荐
Oracle_PL_SQL讲解2(游标).pptx
OraclePL/SQL练习,基本的OraclePL/SQL的语法,游标的在PL/SQL中的使用,如何声明游标,打开游标,提取记录,关闭游标。
单行查询 分组查询 多表查询 子查询 高级查询 高级查询 数据字典 约束 视图 索引 游标 函数 存储过程 触发器 事务管理 用户管理 备份 恢复
Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(一) http://download.csdn.net/source/3268267 Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(二) ...
主要内容:PL/SQL 语言的基本特征、PL/SQL程序的结构、PL/SQL语言的控制结构、游标(cursor)编程、错误处理、存储过程和函数、创建包(Package)、触发器(Trigger)。
PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本文将讲述PL/SQL基础语法,结构和组件、以及如何设计并执行一个PL...
本书是专门为oracle应用开发人员提供的sql和pl/sql编程指南。通过学习本书,读者不仅可以掌握oracle常用工具oracle universal installer、net comfiguration assistant、sql developer、sql*plus的作用及使用方法...
本书是专门为Oracle应用开发人员提供的SQL和PL/SQL编程指南。通过学习本书,读者不仅可以掌握Oracle常用工具Oracle Universal Installer、Net Comfiguration Assistant、SQL Developer、SQL*Plus的作用及使用方法,...
Oracle PL/SQL语言初级教程 1 目录 1 1.PL/SQL语言基础 3 过程 5 包(package) 6 变量和常量 6 执行部分 10 控制结构 12 小结 17 2.PL/SQL的复合数据类型 17 使用记录 19 PL/SQL集合 23 嵌套表 24 使用集合 25 集合的...
Oracle是一个生产中间件和数据库的较大的生产商,oracle原本的含义:“神谕”,指的是神说的话,中国在商朝时代,把一些刻在龟壳上的文字当成是上天的指示,所以在中国将oracle翻译成”甲骨文”.
走进Oracle、认识PL/SQL、数据表的基本操作、表中数据的基本操作、数据的基本查询、查询中函数的使用、数据表的高级查询、索引及视图的使用、数据类型、流程控制、游标、存储过程和函数、触发器、异常处理、事务和锁...
NULL 博文链接:https://dolphin-ygj.iteye.com/blog/440204
Oracle数据库SQL和PL/SQL实例教程 非常适用于初学者。结合例子深刻形象的讲解。 第1章 关系数据库与SQL语言环境 第2章 数据查询 第3章 数据操作 第4章 表和视图 第5章 其他数据库对象 第6章 SQL基础 第7章 游标和...
①:什么是PL/SQL ②:集合 ③:动态SQL ④:条件语句 ⑤:循环语句 ⑥:执行计划 八.游标 ①:隐式游标 ②:显式游标 ③:REF游标 ④:使用游标的好处和坏处 十.子程序[proc,udf],自主事务处理和程序包 ①:存储...
隐式游标(Implicit Cursor):是指非PL/SQL程序中定义的、而且是在PL/SQL中使用UPDATE/DELETE语句时,Oracle系统自动分配的游标。 一.显示游标 1.使用步骤 (1)定义 (2)打开 (3)使用 (4)关闭 2.使用演示 首先创建...
本书是专门为oracle应用开发人员提供的sql和pl/sql编程指南。通过学习本书,读者不仅可以掌握oracle常用工具oracle universal installer、net comfiguration assistant、sql developer、sql*plus的作用及使用方法...
设有学生表student(学号sno, 姓名sname, 年龄 sage,系别dept)、课程表Course(课程号cno,课程名称cname)和选课表sc(学号sno,课程号cno,成绩grade),用Oracle PL/SQL语言设计一个名为pkg_student程序包,要求: ...
oracle 教程 是我的学习笔记。 关于 存储过程(procedure) , 函数(function) 游标(curser) , 任务(job) 等都有详细的说明了实例演示, 每个实例都是经过测试的。