网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > 数据库技术 > Oracle > PL/SQL > PL/SQL的一些语法  

PL/SQL的一些语法

2005-11-26  作者:BitsCN整理  来源:中国网管联盟  点评 投稿 收藏


  写一些关于PL/SQL的语法,免得等到用到的时候还要去乱翻。
  1。控制流程(if,while)
  2。循环(for)
  3。游标(cursor)
  4。异常处理(exception)
  
  1。控制流程()
  
  A.条件语句
  IF THEN
  PL/SQL
  END IF;
  
  IF THEN
  PL/SQL
  ELSE
  PL/SQL
  END IF;
  
  IF THEN
  PL/SQL
  ELSIF THEN
  PL/SQL
  END IF;
  
  2。循环
  
  A.simple loop
  LOOP
  SQL
  EXIT WHEN ;
  END LOOP;
  
  LOOP
  SQL
  IF THEN
  EXIT;
  END IF;
  END LOOP;
  
  B.While loop
  WHILE  LOOP
  SQL
  END LOOP;
  
  C.For loop
  FOR $counter in $low .. $high LOOP
  SQL
  END LOOP
  
  3。游标
  
  在PL/SQL程序中定义的游标叫做显式游标。
  
  A.显式游标的处理由四个部分组成: 网管下载dl.bitscn.com
  cursor $cursorname is $Query;   --定义游标
  open $cursorname;         --打开游标
  fetch $cursorname into $othervariable  --把游标中的东西取出
  close $cursorname  --关闭游标
  
  B.游标属性
  %found     布尔型属性,当最近一次读纪录成功时,为true.
  %nofound                失败时,为false.
  %isopen
  %rowcount   返回已从游标中读取的记录数。
  
  C.参数化游标
  
  所有的SQL语句在上下文区内部都是可执行的,因此都有一个游标指向上下文区,此游标就是所谓的SQL游标。
  
  与显式游标不同,SQL游标不被程序打开和关闭。
  
  4.异常处理概念
  
  异常处理是用来处理正常执行过程中未预料的事件。如果PL/SQL程序块一旦产生异常而又没有指出如何处理时,程序会自动终止。
  
  异常处理部分放在PL/SQL的后半部分,结构为:
  
  EXCEPTION
  WHEN first_exception THEN
  WHEN second_exception THEN
  WHEN OTHERS THEN  --OTHERS必须放在最后 网管u家bitscn.net
  
  异常分为预定义和用户定义两种。
  
  用户定义的异常是通过显式使用RAISE语句来引发。如
  
  DECLARE
  e_TooManyStudents EXCEPTION; -- 类型为Exception,用于指示错误条件
  v_CurrentStudents NUMBER(3); -- HIS-101学生注册当前号
  v_MaxStudents NUMBER(3);   -- HIS-101学生注册允许的最大号
  
  BEGIN
  /* 找出注册学生当前号和允许的最大号 */
  
  SELECT current_students, max_students
  
  INTO v_CurrentStudents, v_MaxStudents
  
  FROM classes
  
  WHERE department = 'HIS' AND course = 101;
  
  /* 检查学生的号 */
  
  IF v_CurrentStudents > v_MaxStudents THEN
  
  /* 太多的学生注册,则触发例外处理 */
  
  RAISE e_TooManyStudents;
  
  END IF;
  
  EXCEPTION
  
  WHEN e_TooManyStudents THEN
  
  /* 当太多的学生注册,就插入信息解释发生过错误 */
  
  INSERT INTO log_table (info) VALUES ('History 101 has ' || v_CurrentStudents ||

网管下载dl.bitscn.com


  
  'students: max allowed is ' || v_MaxStudents);
  
  END;
  
  END;
  
  用户定义的的异常处理
  
  可以使用RAISE_APPLICATION_ERROR来创建自己的错误处理:
  
  RAISE_APPLICATION_ERROR(error_number,error_message,[keep_errors]);
  
  其中error_number是从-20000到-20999之间的参数;error_message是相应的提示信息,小于512字节。如:
  
  CREATE OR REPLACE PROCEDURE Register (
  p_StudentID IN students.id%TYPE,
  p_Department IN classes.department%TYPE,
  p_Course IN classes.course%TYPE) AS
  v_CurrentStudents NUMBER; -- 班上学生的当前号
  v_MaxStudents NUMBER;   -- 班上学生的最大号
  
  BEGIN
  /* 找出学生的当前号和最大号 */
  SELECT current_students, max_students
  INTO v_CurrentStudents, v_MaxStudents
  FROM classes
  WHERE course = p_Course
  AND department = p_Department;
  
  /* 确认另外的学生是否有足够的教室*/
  IF v_CurrentStudents + 1 > v_MaxStudents THEN

网管u家www.bitscn.net


  RAISE_APPLICATION_ERROR(-20000, 'Can''t add more students to ' ||
  p_Department || ' ' || p_Course);
  END IF;
  
  /* 加一个学生在本班 */
  ClassPackage.AddStudent(p_StudentID, p_Department, p_Course);
  
  EXCEPTION
  WHEN NO_DATA_FOUND THEN
  RAISE_APPLICATION_ERROR(-20001, p_Department || ' ' || p_Course ||
  ' doesn''t exist!');
  END Register;
TAGs语法   一些   游标   学生   处理   PL/SQL   异常   SQL   ENDIF   注册    
 上一篇:Useful SQL reference 一些有用的SQL   下一篇:logminer使用步骤二(分析DML操作)
相关文章列表
PL/SQL的一些语法 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
1.PL/SQL - 嵌套游标 cursor-PLSQL
2.用一个实例讲解Oracle数据库的PL/SQL语句
3.PL/SQL----触发器-PLSQL
4.mysql存储过程写法—动态参数运用-PLSQL
5.PL/SQL Developer导出分区索引脚本-PLSQL
6.PL/SQL collection— table() 函数-PLSQL
7.SQL Server 2005 中的架构与用户-PLSQL
8.Oracle数据库维护常用SQL语句集合(2)-P
9.Oracle数据库维护常用SQL语句集合(3)-P
10.再议SQL Server临时表和表变量-PLSQL
最新推荐文章:
1.与数据库无关的处理放到数据库以外来实现
2.Oracle 10g第2版新特性之SQL和PL/SQL
3.通过PL/SQL访问Web Services
4.菜鸟学oracle - 用PL/SQL画直方图
5.重新编译PLSQL中无效对象或指定对象
6.Oracle高级技巧
7.深入了解Oracle 10g新的多重集运算符
8.在SQL中删除重复记录(多种方法)
9.Oracle:PL/SQL中怎样使用Array
10.数据库手册:速查Oracle函数列表
网管论坛交流:
·大家来开心一下吧---看了会很开心的东西-
·中国人不可不知道的知识
·@@小鹏◎◎小鹏同志与某位女明星亲密接触
·◎◎小鹏◎◎发现不明生物,居然正在交配
·[图文]^^^版主是什么?????
·泡论坛的女人是好女人
·做个“水性杨花”的女人
·献给mm俱乐部的所有mm
·深圳一集团企业电脑基础应用培训教程
·■■■■十一遊玩照■■■■■