Oracle PL/SQL 程序设计读书笔记 - 第3章 语言基础
Oracle PL/SQL 程序设计读书笔记 - 第3章 语言基础
3.1 PL/SQL 块结构
PL/SQL的最小的有意义的代码单元叫做块(block)。PL/SQL允许我们创建匿名块,和命令块。命名的块可以是包,过程,函数,解发器或者对象类型。 一个PL/SQL块最多可以由4个不同的单元组成。
- 块头(Header)
- 声明单元(Declaration section)
- 执行单元(Execution section)必须
-
异常处理单元(Exception section)
Header IS Declaration Section BEGIN Execution Section EXCEPTION Exception Section END
3.1.3 嵌套块
你可以在匿名块中嵌套匿名块,嵌套层次可以不止一级。被嵌套的块还有其他叫法比如闭包块,子块或者sub-block;外层的PL/SQL块可以叫做包围块或者父块。
3.1.4 作用范围
每一个PL/SQL变量都有一个作用范围:即可以使用这个变量的程序单元区域。可以使用标签来为嵌套块命名。 如<<localblock>> 使用的时候可以这样用localblock.linner
3.1.5 规范SQL语句中所有对变量和列的引用
Oracle数据库会首先把这些不规范的标识符当作表中的列名来解释,如果不能找到匹配的列,Oracle会接着尝试把它当作当前作用范围内的PL/SQL变量来解释。
3.1.6 可见性
默认情况下,给一个包级别的变量所赋的值只会在当前数据库会话的生命期内有效in会超过会话的生命期。 嵌套程序就是完全出现在包围块的声明单元的过程或者函数。重要的是,嵌套程序可以引用在外层块声明的仍和变量以及参数。
3.3 标识符
长度最多有30个字符; 必须用字母开始; 可以带有$_#字符 不能带有任何空白字符。
3.4 直接量
在数字直接量结尾加上F说明是一个32位的浮点数,加上D说明是一个64位浮点数。 用户自定义分隔符,10g开始引用。如q'!hello!',开头的q和包围的单绰号告诉编译器是一个分隔符,所以字符串只是单词hello.
3.4.1 NULL
在Oracle SQL和PL/SQL中,一个空字符串和零个字符的直接量是没有区别的,后者表现为'' 下面这个表达式无论是在SQL还是在PL/SQL中的求值结果都是TRUE:
'' IS NULL
3.4.2 在一个直接量字符串中嵌入单引号
直到Oracle数量库10g为止,如果想让字符串中带有一个单引号,我们需要使用两个紧挨着的单引号。 Oracle数据库10g引入了用户自定义的分隔符。用"q"开始标志我们的分隔符,然后用单引号把分隔表达式包围起来。
3.4.3 数字直接量
在一些表达式中,我们可以使用下面这些已经被命名的常量。
- “不是一个数字”NaN,被零除或者一个无效的操作的结果:BINARYFLOATNAN
- 正无穷:BINARYFLOATINFINITY
- 能够表示的最大绝对数:BINARYFLOATMAX_NORMAL
- 最小的常量;向下溢出:BINARYFLOATMIN_NORMAL
- 比向下溢出要小一些的最大正数:BINARYFLOATMAX_SUBNORMAL
- 能够表示的最小绝对数:BINARYFLOATMIN_SUBNORMAL
3.6.1 单行注释语法
单行注释使用两个连字符开始(--),这两个字符间不能有空格或者其他字符。
3.6.2 多行注释语法
多行注释使用一个斜线-星号(/)开始,用一个星号-斜线(/)结束。PL/SQL会把这两组符号之间的全部字符都看作是注释,并且会被编译器忽略。
3.7 PRAGMA关键字
pragma通常是一行用于告诉编译器该采取什么行动的源代码。
3.8 标签
PL/SQL标签是一种为我们程序中特定部分命令的方法
<<identifier>>
其中identifier是一个有效的PL/SQL标识符。无需终结符;