一、PL/SQL简述
PL/SQL(Procedural Language/SQL)是一种过程化语言,PL/SQL是Oracle的专用语言,它是对标准SQL语言的扩展,它允许在其内部嵌套普通的SQL语句,也可以定义变量和控制程序的执行流程,这样就将SQL语句的数据操纵和查询能力与PL/SQL的过程处理能力结合在一起了。
PL/SQL程序块
标准PL/SQL块的语法格式:
[DECLARE] --声明部分,可选
BEGIN --执行部分,必选
[EXCEPTION] --异常处理部分,可选
END
eg:定义一个PL/SQL代码块,计算两个整数的和与这两个整数的差的商
set serveroutput on
declare
a int:=100;
b int:=200;
c number;
begin
c:=(a+b)/(a-b);
dbms_output.put_line(c);
exception
when zero_divide then
dbms_output.put_line('除数不能为0!');
end;
/
说明:set serveroutput on是设置系统输出,一次会话只需要写一次
a int:=100;中的:=是PL/SQL中的赋值语句
/是结束符
输出结果:
定义变量和常量
1、定义变量
变量是指其值在程序运行过程中可以改变的数据存储结构,定义变量必须的元素就是变量名和数据类型,另外还有可选的初始值,其标准语法如下:
<变量名><数据类型>[(长度):=<初始值>];
2、定义常量
常量是指其值在程序运行过程中不可改变的数据存储结构,定义常量必须的元素包括常量名、数据类型、常量值和constant关键字,其标准语法格式如下:
<常量名> constant <数据类型> := <常量值>;
基本数据类型
1、数值类型
数值类型主要包括NUMBER、PLS_INTEGER和BINARY_INTEGER三种基本类型。其中,NUMBER类型的变量可以存储整数或浮点数;而BINARY_INTEGER或PLS_INTEGER类型的变量只存储整数。
NUMBER(m) m代表数值总的位数
NUMBER(m,n) m代表数值总的位数,n代表小数位数
2、字符类型
字符类型主要包括VARCHAR2、CHAR、LONG、NCHAR和NVARCHAR2等。这些类型的变量用来存储字符串或字符数据
VARCHAR2(m) m<32767
CHAR(m) m<32767,有默认值1
3、日期类型
日期类型只有一种--即DATE类型,用来存储日期和时间信息,DATE类型的存储空间是7个字节,分别使用一个字节存储世纪、年、月、天、小时、分钟和秒。
4、布尔类型
布尔类型也只有一种--即BOOLEAN,主要用于程序的流程控制和业务逻辑判断,其变量可是TRUE、FALSE或NULL中的一种
特殊类型
1、%type
使用%type关键字可以声明一个与指定列名称相同的数据类型,它通过紧跟在指定列名的后面
eg:在SCOTT模式下,使用%type类型的变量输出emp表中编号为7369的员工姓名和职务信息
set serveroutput on
declare
var_ename emp.ename%type;
var_job emp.job%type;
begin
select ename,job into var_ename,var_job from emp where empno=7369;
dbms_output.put_line('编号为7369的员工姓名为&#x