动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Oracle教程 ]的信息



本月文章推荐
.一个比较全的simsun.ttf字体设置.
.讲解杀死Oracle数据库死锁进程的.
.Oracle数据库删除两表中相同数据.
.使用Oracle实现实时通信.
.Oracle 8i中回滚段使用和ORA-1555.
.sqlplus中改变日期的输出格式(nl.
.eval用法三例.
.使Oracle能同时访问多个SQL Serv.
.PL/SQL循序渐进全面学习教程--Or.
.用网格连通孤岛.
.讲解物化视图ORA-23313错误的解决.
.安装 PHP 和 Oracle 10g 即时客户.
.删除一个Oracle用户的对象.
.ORA-04098错误解决方法.
.接触 solaris : 安装 oracle.
.学习oracle sql loader 的使用.
.Oracle预定义角色有哪些?.
.RED HAT 7.2H 上安装ORACLE 8i.
.OraclePL/SQL语言基础(1).
.ORACLE在HP-UX下的系列问题处理(.

ORACLE的PL/SQL二

发表日期:2008-2-9 |



  (B):其中语句CURSOR desc_salary(emp_id NUMBER) RETURN EMPRECTYP定义了一个游标desc_salary。
  
  游标(CURSOR)详见本节最后的内容。
  
  .包体建立
  
  CREATE PACKAGE BODY emp_actions AS
  
  CURSOR desc_salary(emp_id NUMBER)RETURN EMPRECTYP
  
  IS SELECT EMPNO,SAL FROM emp ORDER BY SAL DESC;
  
  PROCEDURE hire_employee
  
  (ename CHAR,
  
  job CHAR,
  
  sal NUMBER,
  
  mgr NUMBER,
  
  comm NUMBER,
  
  deptno NUMBER)IS
  
  BEGIN
  
  INSERT INTO EMP VALUES(EMPNO_SEQ.NEXTVAL,
  
  ename,job,mgr,SYSDATE,sal,comm,deptno);
  
  END hire_employee;
  
  PROCEDURE fire_employee(emp_id NUMBER) IS
  
  BEGIN
  
  DELETE FROM EMP WHERE EMPNO=emp_id;
  
  END fire_employee;
  
  END emp_actions;
  
  注重:hire_employee过程使用参数,数据库序列empno_seq、函数SYSDATE插入一个新职工记录,其职工号由序列产生,聘用日期由函数
  
  SYSDATE生成。
  
  在包说明中,说明对所有应用是可见的而且可存取。在包体中,实现细节是隐藏的,不可存取。所以改变包体不会引起调用程序的重新编译。
  
  在设计一个应用时,最初只需要定义包说明的接口信息。在没有包体时可编制包说明的程序并进行编译。一旦包说明已经被编译,引用该包的存贮子程序同样编译。在完成应用之前,可不必定义包体。调试、提高或替换一个包体不必修改包说明,以致不需重新编译调用程序。在包说明中所说明的游标和子程序必须在包体中定义。
  
  (3)对包装子程序的调用
  
  包装的子程序可被数据库触发器、其它的存贮子程序、Oracle预编译应用程序、OCI应用程序或ORACLE工具(如SQL*PLUS)调用,其调用形式如下:
  
  .从另一存贮子程序调用
  
  存贮子程序可调用包装子程序。
  
  例2.53: 调用包EMP_ACTIONS中的包装过程HIRE_EMPLOYEE,其形式为:
  
  EMP_ACTIONS.HIRE_EMPLOYEE(name,title,...);
  
  .从应用程序中调用
  
  一个ORACLE预编译的应用程序或OCI应用程序可用无名PL/SQL块调用包装子程序。
  
  例2.54: 在ORACLE预编译应用程序对包装过程HIRE_EMPLOYEE调用,形式为:
  
  EXEC SQL EXECUTE
  
  BEGIN
  
  EMP_ACTIONS.HIRE_EMPLOYEE(:name,:title,...);
  
  END;
  
  END_EXEC;
  
  其中实在参数name、title为宿主变量。
  
  .从ORACLE工具中调用
  
  可从ORACLE工具(如SQL*PLUS、SQL*FORMS和SQL*DBA)中交互地调用包装子程序。其调用形式为:
  
  SQL>EXECUTE EMP_ACTIONS.HIRE_EMPLOYEE(‘TATE’,’CLERK’,...);
  
  注重:在执行一个包装子程序之前,ORACLE标志一个隐式的保留点。假如子程序由于具有未处理例外而失败时,在返回到宿主环境之前,ORACLE将回滚到该保留点上.
  
  在一个包装子程序中可包含任何SQL语句和PL/SQL语句。然而,凡参与分布工事务、数据库触发器、SQL*FORM应用程序的子程序不能调用包含有COMMIT、ROLLBACK、SAVEPOINT语句的包装子程序。
  
  .远程存取
  
  可利用下列语法调用存贮在远程ORACLE数据库中的包装子程序:
  
  包名.子程序名@DB链名(参数1,参数2,...)
  
  ORACLE在数据字典中分别存贮包说明和包体。其它对象仅可引用包说明中全局包对象,重新定义包体中的对象时不会引起ORACLE使从属对象无效。
  
  (4) STANDARD包和产品特有的包
  
  名为STANDARD的包定义了PL/SQL环境。该包说明全局的申明类型、例外和子程序,可自动地适用于每一个PL/SQL程序。STANDARD包的内容对应用是直接可见的。许多内部函数是被重载的。
  
  为了方便建立基于PL/SQL的应用程序,ORACLE SERVER和几种ORACLE工具都有产品特有的包,例SQL*FORMS提供名为SQLFORMS的包。如需要更多信息,请参见相应产品的引用手册。
  
  三、控制结构
  
  本节介绍PL/SQL程序的控制流结构。
根据结构化程序设计理论,任何程序可同三种基本控制结构组成:分支结构、循环结构和顺序结构。PL/SQL也用相应的语句来支持这三种控制结构。
  
  1.条件控制IF语句
  
  IF语句是条件执行语句。IF语句有三种形式:IF_THEN,IF_THEN_ELSE和IF_THEN_ELSIF。
  
  (1) IF_THEN形式
  
  它是IF语句最简单形式,将一条件与一语句序列相联。当条件为TRUE时,执行语句序列。
  
  例 2.55:
  
  IF X>Y THEN high:=X;ENDIF
  
  (2) IF_THEN_ELSE形式
  
  该种IF语句形式比简单形式增加要害字ELSE,后跟另一语句序列。形式为:
  
  IF 条件 THEN
  
  语句序列1;
  
  ELSE
  
  语句序列2;
  
  ENDIF;
  
  ELSE子句中语句序列仅当条件计算为FALSE或NULL时执行。在THEN和ELSE子句中可包含IF语句,即IF语句可以嵌套。
  
  (3) IF_THEN_ELSIF形式
  
  该形式利用ELSIF要害字引入附加条件。形式为:
  
  IF 条件1 THEN
  
  语句序列1;
  
  ELSIF 条件2 THEN
  
  语句序列2;
  
  ELSE
  
  语句序列3;
  
  ENDIF;
  
  当条件1计算得FALSE或NULL时,ELSIF子句测试条件2,为TRUE时,则执行语句序列2。IF语句可以有任何数目的ELSIF语句,而最后的ELSE子句是可选项。在此种情况下,每一条件对应一语句序列,条件由顶向底计算。任何一个条件计算为TRUE时,执行相对应的语句序列。假如所有条件计算为FALSE或NULL,则执行ELSE子句中的序列。
  
  例 2.56:
  
  IF X>Y THEN
  
  high:=X;
  
  ELSIF X=Y THEN
  
  B:=FALSE;
  
  ELSE
  
  C:=NULL;
  
  ENDIF;
  
  其中,B和C是布尔数据类型(BOOLEAN)。布尔数据类型用于存贮TRUE、FALSE或NULL(空值)。它没有参数,仅可将三种值赋给一个布尔变量,不能将TRUE、FALSE值插入到数据库的列,也不能从数据库的列中选择或获取列值到BOOLEAN变量。
  
  2.循环语句:LOOP和EXIT语句
  
  (1) 基本循环
  
  基本循环(或无限循环)是循环语句的最简单的形式,它由要害字LOOP和ENDLOOP之间的语句序列组成。每一次循环迭代,语句序列执行一次,然后控制重新由循环的顶部开始。可利用EXIT、GOTO或RAISE语句退出循环。基本循环形式为:
  
  LOOP
  
  语句序列;
  
  EXIT WHEN 布尔表达式;
  
  ENDLOOP;
  
  其中EXIT语句用于退出循环。EXIT语句有两种形式:无条件的EXIT和条件的EXIT[标号名]WHEN。[标号名]选项中的标号名为所要退出的循环标识。使用标号名不仅可退出当前循环,而且可退出由标号名所标识的循环。
  
  不能用EXIT语句退出一个PL/SQL块。
  
  (2) WHILE_LOOP循环
  
  WHILE_LOOP循环语句将一条件与一由要害字LOOP和ENDLOOP包装的语句序列相联系。在每次循环开始前,计算条件,假如该条件计算得到TRUE,执行语句序列,然后控制重新回到循环顶部。假如条件计算得到FALSE或NULL,结束循环。在循环中引起例外时也结束循环。该语句的形式为:
  
  WHILE 条件 LOOP
  
  语句序列,
  
  END LOOP;
  
  例 2.57:
  
  WHILE total<=25000 LOOP
  
  ...
  
  SELECT INTO Salary From emp WHERE...;
  
  total:=total+Salary;
  
  ENDLOOP;
  
  循环迭代次数依靠于条件,在循环完成之前是未知的。由于条件的测试是在循环的顶部,语句序列可以一次也不执行。
  
  (3) 数值FOR_LOOP循环
  
  数值FOR循环语句在一指定整数范围中循环,所以通过该循环的迭代次数是已知的。在第一次进入FOR循环时计算范围,之后再不重新计算。对由整数表达式1..整数表达式2定义的范围中每一整数,语句序列执行一次,每次迭代之后,循环索引增加。
  
  索引名为命名循环索引的标识符,索引名无需说明,它被隐式地说明为INTEGER类型的变量。该索引名的范围是该循环本身,在循环外不能存取。注重隐式说明压倒任何循环外的任何其它说明。
  
  整数表达式1、整数表达式2是表达式,计算出一个整数。要求整数表达式1的值不大于整数表达式2的值。
  
  REVERSE选择:缺省时,迭代由低界向高界处理。但使用REVERSE后,迭代是由高界向低界处理,每次迭代后,循环索引减小。
  
  数值FOR循环语句形式为:
  
  FOR计数器IN[REVERSE]低界..高界LOOP
  
  语句序列;
  
  ENDLOOP;
  
  例 2.58:
  
  FOR I IN 1..3 LOOP --将值1,2,3赋给I
  
  语句序列; --执行三次
  
  ENDLOOP;
  
  3. 顺序控制
  
  GOTO语句和NULL语句对PL/SQL程序设计不像IF语句和循环语句那么重要,但有时PL/SQL结构还是需要。

  
  (1) GOTO语句
  
  GOTO语句无条件转移到一标号,该标号应在它的范围内是唯一的,它必须位于可执行语
上一篇:PL/SQL DEVELOPER 基本用法详解 人气:1302
下一篇:SQL编写规范 人气:470
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-24 Sablog-X v2.0 预览版
2008-7-24 帝国备份王EmpireBak 2008 正式版
2008-7-24 网趣网上购物系统时尚版 v8.2
2008-7-24 纵横B2B电子商务系统XYECS!B2B v
2008-7-24 e路小说小偷 v1.2.0723
2008-7-24 凌风美女图片站程序 v2.2
2008-7-24 TOM15电影收索程序
2008-7-24 清风信息自动采集生成系统 v1.0
2008-7-24 QQ邮箱编辑器 v1.0 (小小菜刀ASP
2008-7-19 UltraEdit 简体中文增强版 14.10
2008-7-19 CentOS 5.2 i386 LiveCD
2008-7-19 Snapture多功能相机 v1.4
2008-7-19 iAcces中文输入法 v1.0Build016
2008-7-19 Cookbook烹饪秘籍 v2.5
2008-7-19 苹果专用DVD转换工具 v1.1.59汉化
2008-7-19 Modem修复软件ZiPhone修改版04.0
2008-7-19 AgileMessenger即时通讯工具美化
2008-7-19 Sketches画图软件 v0.7b6破解版


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵