`

PL SQL学习笔记(未完)

阅读更多
sql属于第三代语言, 也就是说通过该语言能告诉操作者能做什么, 而无法告诉操作者如何做, 也就是屏蔽了系统内部的数据结构和算法
pl sql属于第四代语言, 它通过在sql的基础上引入变量, 控制语句, 过程和函数, 使得它除了sql的功能之外, 还更加灵活.

plsql的大致结构如下:
引用
DECLARE
   变量声明
BEGIN
   执行代码块
   EXCEPTION
   异常执行代码块
END

plsql也就是"三段式"的结构(声明, 执行代码快, 异常处理块), 其中只有执行代码块是必须的,其他两个部分是可选的.

pl sql中的变量可以自定义, 一些复杂的数据结构,比如记录类型, 表类型之类的

游标是用来处理使用select语句从数据库中检索到的多行记录的工具, 通过游标可以多一组记录集逐行进行处理, 对数据的统计和分析来说游标非常有用

过程和函数(统称为子程序)是经过编译的程序代码块,二者的区别是, 函数有返回值, 过程没有

为了方便管理, 可以将子程序, 变量以及变量类型组成包, 包包括两部分:说明和包体, 跟jdk有些类似, oralce也提供了一些内置的package, 一般都是以DBMS_打头用来方便在我们的plsql中调用.

一般的程序设计语言的基本单位是语句, 但是plsql的基本单位是语句块, 也就是declare ... begin ... end之间的部分.可以给语句块取一个名字, 也可以没有名字(匿名语句块), declare只是用来提供变量声明的, 如果没有变量声明则可以直接以begin打头.因为代码的执行部分是放在begin...end;(后面必须加分号)之间的.

用户自定义类型, 可以这样理解自定义类型, 自定义类型是基本类型的一个子集, 因此又称之为基本类型的子类型, 如果是基于数据库表中的某个字段的类型,可以这样写:SUBTYPE ID_num IS emp.empno%TYPE, 但是它只能集成列的尺寸约束, 不会集成象not null之类的约束.

在plsql中关于null有几点需要注意:
和包含null的值进行比较, 得到的结果总是null;
将逻辑操作符not应用一个null值上, 其结果也为null;
case...when条件选择语句中如果没有找到匹配的条件, 返回的结果是null, 而且null也不能做为when中的比较结果来进行匹配, 必须使用is null来测试结果;
在if...then...else条件语句中, 如果为false或者null会执行else中的语句;
零长度的字符串被看作null;
在使用||串接字符串时, null将被忽略;

plsql与其他的语言相比, 多了一个goto和null语句, 使用goto有很多限制, 不用多说, null语句表示什么也不做.

161 过程与函数
180 包
package是plsql代码块的一种组织形式, 它分包规范和包体, 只有子程序和游标需要在包体部分定义, 要想包体中定义的子程序和游标在包之外也能使用, 必须在包规范中进行声明
218 游标
游标可以用来增强sql语句的功能, 有时候sql无法搞定的时候, 我们就可以借助游标来对从数据库中取出的表进行处理
对于显式游标的处理可以概括为四个步骤:声明游标,打开游标, 提取游标和关闭游标
245 触发器
...
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics