PL/SQL程序的基本单元是语句块。所有PL/SQL程序都由语句块组成,这些语句块可以是顺序出现,也可以相互嵌套。
有二种类型的语句块:匿名的和命名的。匿名语句块通常是动态生成的,它只能执行一次。命名语句块是指具有名字的语句块。命名语句块可以分为:
1、标号语句块:带有标号的的匿名语句块,和匿名语句块类似,动态生成,只能执行一次。
2、子程序:即过程和函数。它可以以多种形式存储在数据库中:单个对象,包的一部分。通常子过程一旦生成便不再更改并可以多次运行。
3、触发器:由发生在数据库中的事件触发的PL/SQL语句块。
所有的语句块都包含三个基本的部分:声明部分、执行部分和异常处理部分。只有执行部分是必需的,其他两个部分是可选的。
声明部分:放置在本语句块中要使用的所有变量、游标和类型。也可以声明本地过程和函数。这些子过程仅能在该语句块中使用。
执行部分:放置语句块要完成的处理
工作异常处理部分:对错误进行处理,如果没有发生错误,该部分中的代码不会被执行。
嵌套块:一个语句块可以嵌套在部语句块的执行部分或异常处理部分
DECLARE
v_StudentID NUMBER(5) := 1000;
v_FirstName VARCHAR(20);
BEGIN
SELECT first_name INTO v_FirstName FROM students WHERE id = v_StudentID;
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO log_table( info ) VALUES(‘Student 1000 does not exist!’);
END;
标识符:用来给对象命名
变量,游标,类型,
子程序命名规则
字母开头
后跟任意的非空格字符,数字,货币符号,下划线,或#
最大长度为30个字符
First Name:错,有空格
v_StudentID:对,可读性较强
x+y:错,不能为+号
TempVar:对
_tmp_:错,不是以字母开头
This_is_a_really_long_identifier:字符超长
如果要将单引号用作字符串的一部分,就要将两个单引号并排放置如要输出一个仅包含一个单引号的字符串就会像下面这样:‘’’’第一个单引号指明字符串的开始,下面两个单引号标识着字符串中的单个字符,第四个单引号标识着字符串的结束。
布尔型文字和其它不一样,多一种取值:null
变量声明: Var_name [CONSTANT] type [NOT NULL] [:=/default value];
变量是一些内存单元,可以在变量中存储数据。来自数据库中的信息可以被赋值给变量 ,而变量中的内容也可以被插入到数据库中。每一个变量都有一个特定类型,该类型描 述了可以在该变量中存储的信息类型。
TYPE:是类型
NOT NULL:该变量必须要被初始化
CONSTANT:取值必须要初始化,并且取值不能够改变为与其初始值不同的数值。
:=:表赋值。可以用关键字DEFAULT替换