PLSQL程序设计基础篇

上传人:hs****ma 文档编号:506732220 上传时间:2024-02-09 格式:DOC 页数:49 大小:198.50KB
返回 下载 相关 举报
PLSQL程序设计基础篇_第1页
第1页 / 共49页
PLSQL程序设计基础篇_第2页
第2页 / 共49页
PLSQL程序设计基础篇_第3页
第3页 / 共49页
PLSQL程序设计基础篇_第4页
第4页 / 共49页
PLSQL程序设计基础篇_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《PLSQL程序设计基础篇》由会员分享,可在线阅读,更多相关《PLSQL程序设计基础篇(49页珍藏版)》请在金锄头文库上搜索。

1、文档供参考,可复制、编制,期待您的好评与关注! PL/SQL程序设计(上册)写在前面之所以不怕麻烦把有关PL/SQL的知识写下来,一方面,是为了加深理解,便于以后随时翻阅,另一方面,是因为自己看书总是不能从头看到尾,仔仔细细,喜欢跳跃式阅读,导致学习过程中,容易有遗漏。所以,将学习到的知识总结起来,方便监督自己,方便大家查阅。本文所记录的内容当然不是本人凭经验而写,而是学习的笔记,参考的资料以Oracle9i PLSQL Fundamentals和Oracle9i Develop PLSQL Program Units 为核心,其次,还包括精通Oracle10g PLSQL编程和Oracle

2、PLSQL Best Practices等。由于是学习笔记么,说是教程,其实是在吸引大家的注意,呵呵,主要是想在方便大家查阅和入门者入门外,希望大家多多指教,多多提出意见,共同把这块知识学熟、学通、学透。Quasar Weis Email: Quasar Weis QQ: 734089783Quasar Weis Real Name: WeiZhaozhe of NEU目录PL/SQL程序设计(上册)1第一章 认识PL/SQL3第二章 SQL回顾5第三章PL/SQL的基本结构7第四章PL/SQL的数据类型及使用10第五章 流程控制29第六章 游标35第七章 异常处理46第八章 下册预知49第一

3、章 认识PL/SQL这一章主要记录了两个问题:1 什么是PL/SQL? 2 PL/SQL有什么优势?下面从这两个问题展开论述。什么是PL/SQL?PL/SQL即procedural language/standard query language, PL/SQL是具备程序设计语言特性(如:定义变量、流程控制、面向对象等)的、关系数据库标准查询语言SQL的过程性拓展(procedural extension)。SQL是非过程语言,非过程,让我理解,就是不用你了解语句的处理过程,而直接达到开发者的目的。如:select name from student这条语句,就是向数据库说:“我要学生的姓名”

4、,然后数据库就会返回相应的字段值而我们并不知道它是如何处理的也基本无法控制。而PL/SQL语言,则具备程序设计语言甚至高级程序设计语言的特点,更好地满足我们对数据的操作。PL/SQL有什么优势?PL/SQL的优势可以概括为以下五点(待补充):1 具备程序设计语言的特性(模块化、信息隐藏、面向对象等);2 异常处理,PL/SQL具备异常处理的机制;3 可移植,想想Java吧,看看两者有什么共同之处?PL/SQL的JVM就是Oracle Server,呵呵4 改善性能,一方面,通过PL/SQL语句块(Block)可以一次性向Oracle Server发送多个SQL语句,减少网络的传输;另一方面,有

5、些PL/SQL可以在客户端执行(前提是某些客户端含有PL/SQL引擎),可以有效的减少与Oracle Server的交互;再有,PL/SQL通常会存储在Oracle数据库中,这对于网络程序来说真是天降福音,因为,这样一系列的处理交互,都可以以一个调用数据库本身存在的程序而完成,大大提高了性能。5 可以与SQL交互,在PL/SQL中可以嵌入SQL的DML、DQL、TCL(事务控制语言)语句。第二章 SQL回顾你都开始对PL/SQL感性趣了,那么SQL肯定是多多少少听说过的,呵呵,就回顾一些基础吧,那些拓展的内容,建议是遇见了再研究吧。DQL:源码dql.sql:select dname, max

6、(sal) - 5 对列筛选(分组字段或聚集函数)from emp left outer join dept - 1 确定表using(deptno)where deptno 0 - 2 确定行(记录)group by dname - 3 将行分组 having max(comm) is null or max(comm) 0 - 4 对组筛选 order by dname - 6 对结果集排序如上的源码表示了SQL语句的执行顺序,这个一定要理解好啊!思考题:问题:为什么带有group by的select和having只能含有分组字段和聚集函数呢?答:因为group by分组后,只能对组进行操

7、作了。也就是说,无论你是筛选行having还是列select,都要以组为单位进行,所以只能使用组共有的属性,除了分组字段外,只有像什么每组的最大值啊、最小值啊、平均值啊等等这些组的特性或叫 组员共有的特性。所以在使用时一定注意,带有group by后,having和select中只能有-分组字段和聚集函数DML:insert into values就不再重复了,不过听说现在可以一次性向多个表中插入呢,使用insert into all和insert into first,具体用法如下:insert into all/first when 条件 then into 表1when 条件 then

8、into 表2when 条件 then into 表3else into 表4select from 表源至于ALL和FIRST的区别就是:如果是ALL,就会插入所有满足条件的表,而如果是FIRST直插入第一个满足条件的表。TCL:commit;rollback to A;savepoint A;不多写了,因为我也只知道这点儿了,呵呵,不过听说SQL有个优化hint挺好玩,如:insert /+append+/ into table values XXX;还有对Group by的拓展rollup和cube,还有grouping函数、group set等,以后再研究把,谁让俺是菜鸟呢?第三章PL

9、/SQL的基本结构本章将从PL/SQL的分类、PL/SQL的基本结构以及第一个PL/SQL程序展开。PL/SQL的分类:按照PL/SQL的运行环境,可以分为客户端PL/SQL和服务器端PL/SQL。通常,我们(指开发者)接触到的PL/SQL都是存储在服务器Oracle数据库中的,所以主要学习这一种就可以了,至于客户端的PL/SQL,我也不太了解啊,o()o 唉希望大虾在与我联系,加上啊!按照形式,可分为命名的PL/SQL和匿名的PL/SQL,其中,命名的,又可以分为子程序和触发器,而子程序又可以分为包、函数、过程。是不是有点儿?不过不要紧,等你看过整个文章,再回来看就是很简单了。PL/SQL的

10、基本结构如下:Declare在这里可以定义变量、常量、异常等。Begin 在这儿可以写一些执行SQL或PL/SQL语句。Exception这儿可以捕获并处理异常怎样在发生异常后让程序继续执行其他语句呢? 答:写在这块儿不就得了,呵呵 End;结束了,别忘了“;”啊,呵呵你的第一个程序?也是我的,“hello, world!”有人说hello world太老套了,boring,有什么,在你什么都不懂时还能开发出更高级的么,我们就hello world呵呵。源码:说明:源码都是由PL/SQL Developer 8开发,于Oracle10g测试- Created on 2010-4-27 by Q

11、uasar /*这就是你的第一个程序了,也是我的,哈哈*/declare msg varchar2(15); -定义变量begin msg := Hello World; -赋值 dbms_output.put_line(msg); -内置包使用 end;运行结果:Hello WorldPL/SQL的注释可以通过这个程序看出来啊,自己看吧,不多说了第四章PL/SQL的数据类型及使用本章将介绍PL/SQL的数据类型,有些数据类型很“简单”,有些很难理解,不过都是因为这些数据类型你没有使用过,用几次就知道了,在这里,先认识认识它们,不熟也没关系。PL/SQL的变量类型可以分为标量、复合类型、参照类

12、型和LOB类型四类,下面就分别介绍给大家。标量,就是单值变量,这么说应该可以理解吧。常用的类型如下:字符串:varchar2(n)、char(n)、long、long raw在程序设计中,常常用到字符串的处理,在PL/SQL中,有很好的支持,不但有字符串函数,还有对正则表达式的支持。我们最常用的数据类型就是varchar2(n)了,n用于最大字符长度。其中,char和long、long raw不推荐使用,原因是:前者浪费资源后者不够灵活。数字:number(m, n)、binary_integer、binary_float、binary_double对于数字类型,number是不错的选择,那么

13、m, n代表什么呢?如果定义为number(6, 2)则代表整数位最大长度是4,小数位最大长度是2,你猜猜吧,m和n的含义。其中,binary_integer在定义表时是很常用的。binary_float和binary_double是Oracle 10g的新数据类型,注意在赋值时格式分别如下:223.4323f和23423.4545d,像Java吧,可能都遵循IEEE-754的浮点数标准吧。布尔:Boolean 布尔值分别为:TRUE、FALSE、NULL日期:Date和TimestampDate默认只显示日期,而Timestamp默认情况下会显示时间信息,还有上下午标志呢,Timestamp

14、是Oracle 9i新加入的数据类型。标量的定义格式:vname DATATYPE CONSTANTNOT NULL := / DEFAULT exp 例如:name varchar2(30); REAL_NAME varchar2(30) constant default 魏照哲; name varchar2(10) := hello; 下面是一个标量使用的例子程序:源码:scalar.tst例子程序来自scott/scott用户或hr/hr用户(alter user scott account unlock解锁)- Created on 2010-4-27 by Quasardeclare

15、 eno number(4); empname varchar2(3); empjob varchar2(9);begin select empno, ename, job into eno, empname, empjob from emp where empno = 7788; dbms_output.put_line(Oracle第一个员工的信息:); dbms_output.put_line(员工号:|eno); dbms_output.put_line(员工姓名:|empname); dbms_output.put_line(职位:|empjob);end;运行结果:如上就是说varchar2不够长啊,呵呵,交给你个定义标量scalar的法宝:%TYPE,通过它你就可以使用字段的数据类型了,避免类型不匹配等错误。更改程

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号