PL/SQL编程

一、PL/SQL基础
基本语法

DECLARE 变量名 类型;
DECLARE 变量名 类型 :=;
BEGIN
	代码;
END;

二、PL/SQL语言概览
1、PL/SQL块
块是PL/SQL最基本的程序单元,在PL/SQL中通过使用块来组织相关的定义和各种PL/SQL语句。所有的PL/SQL程序都是有语句块组成,块之间还可以相互嵌套。一个PL/SQL块是有关键字DECLARE、BEGIN、EXCEPTION 和END组成的,这些关键字将PL/SQL块划分为3个部分:
A、定义区,由DECLARE 开始,包BEGIN结束,用来定义变量、常量和类型。
B、执行区,有BEGIN和END之间组成,是PL/SQL的主体。
C、异常处理区,用来处理PL/SQL语句执行过程中的异常。
一个PL/SQL块的基本结构如下所示:

DECLARE			--可选
	--定义部分
BEGIN			--必选
	--执行部分
EXCEPTION		--必选
	--异常处理部分
END;

PL/SQL块按作用又可以分为俩种:
A、匿名块,没有名称的PL/SQL块,每次执行都必须重新编译,冰倩执行完成后不会保存任何信息;
B、命名快,具有名称的PL/SQL块,又可细分为3个部分,这种类型的一般保存在数据字典中以备多次重复调用。
PL/SQL命名快分为如下三种类型:
a、使用<<块名称>>进行标识的快,通常是块嵌套时,为了区分多级嵌套层次关系而使用命名甲乙区分,这种类型的块不会保存在数据字典中,只是为了加以区分的标记;
b、有函数或过程组成的子程序块,这种块保存在数据字典中,一编译后的形式存在,这样限次调用时不用重新编译,可以提高执行的性能;
c、数据库触发器块,触发器块是指当数据库中的某个时间出发后要执行的PL/SQL语句块,也会存储到数据字典中,并且是以编译后的形式存在。
嵌套块

BEGIN	
	BEGIN	
	
	END;
END;

三、变量和数据类型
PL/SQL中的变量按照类型可以分为以下几类:
1、标量变量,指能存放单个数值的变量,这是PL/SQL最常用的变量,标量变量的数据类型包含了数字、字符、日期和布尔类型,比如VARCHAR2,CHAR,NUMBER,DATE 等。
2、复合变量,是指用于存放多个值的变量,必须要使用PL/SQL符合数据类型来定义变量,比如PL/SQL记录、PL/SQL表、嵌套表及VARRAY等类型。
3、参照变量,是指用于存放数值指针的变量,比如PL/SQL游标变量和对象变量。
4、LOB变脸,是指用于存放大批量数据的变量。
标量变量语法如下:

variable datatype [ [ NOT NULL] { := | DEFAULT } expression} ;

variable:变量名;datetype:变量类型;NOT NULL指定变量是否具有NOT NULL非空约束 ;使用 := fuhao 指定一个常量值或者一个表达式,还可以是一个DEFAULT 关键字指定类型的默认值。
PLS_INTERGER(整形)和BINARY_INTEGER :-2147486684到2147483647。

BEGIN
	part_number NUMBER(6);					--SQL数据类型
	part_name VARCHAR2(20);
	in_stock BOLLEAN;
	part_price PART_INTEGER;
	hours_worked DATE DEFAULT SYSDATEL;		--使用DEFAULT关键字指定初始值
END;

另一种赋值

SELECT select_item [, select_item ] ...
INTO variable_name [, select_item ] ...
FROM table_name;

select_item 对应的值是variable_name 。
定义常量时,需要用到CONSTANT 关键字,必须有初始值,且不能在执行部分修改值。语法如下

variable CONSTANT datatype [ [ NOT NULL] { := | DEFAULT } expression} ;

四、程序循环语句
PL/SQL包含3种流程控制语句:
1、条件判断语句,语序根据某些条件执行代码段,可供使用的有IF和CASE语句。
2、循环控制语句,语序反复多次执行一个代码块,它包含了简单的LOOP循环、FRO LOOP循环、游标FOR循环和WHILE LOOP循环。并且提供了EXIT和EXIT WHEN 语句进行循环中断 。
3、顺序控制语句,在使用顺序流程控制时,可以使用GOTO进行无条件跳转,通过NULL语句来提升程序代码的可读性。

1、条件判断语句
在PL/SQL中有一下几种控制语句:
A、IF THEN END IF语句,IF 和THEN之间指定条件,THEN和 END IF 之间是成立时所执行的语句块。
B、IF THEN ELSE END IF,IF 和THEN之间指定条件,当成立时执行THEN和 ELSE 之间是语句块,如果不成立则执行ELSE和END IF之间的代码块。
C、IF THEN ELSE END IF。
D、简单CASE。
E、搜索CASE语句。

IF THEN END IF语句语法如下

IF condition THEN 
	statements
ELSE
	else_statements
END IF

IF THEN ELSE END IF语法如下

IF condition_1 THEN 
	statements_1
ELSIF condition_2 THEN 
	statements_2
...	
ELSE
	else_statements
END IF

CASE语法如下:

CASE selector
WHEN selector_value_1 THEN statements_1
WHEN selector_value_2 THEN statements_2
...
WHEN selector_value_n THEN statements_n
[	ESLE
else_statements ]
END CASE;

2、循环控制语句。
PL/SQL循环语句主要分为3种:
1、简单循环。
2、数字式FOR 循环,又称为已知次数的循环。
3、WHILE循环。

1、简单循环语法如下:

[label] LOOP
	statements
END LOOP [label];

当使用LOOP和LOOP END 将statements代码包装起来后,代码会进行入无限制 的循环中,也就是死循环,必须使用EXIT和可选的WHEN子句,在循环满足特定的条件下退出循环,语法如下:

EXIT [label] [WHEN bolwean_expression] ;

其中label用于指定要退出的循环语句标签,如果前LOOP前面制定了循环的命名标签,可以使用label退出到指定的循环位置处。

2、数字式FOR 循环
语法如下

[label] FOR index IN [REVERSE] lower_bound..upper_bound LOOP 
	statements
END LOOP [label];

CONTINUE或CONTINUE WHEN跳出本次循环,进行下一次
3、使用WHILE LOOP循环

[label] WHILE condition LOOP 
	statement
END LOOP [label];

五、顺序控制语句
1、GOTO语句,改变程序的执行逻辑,用来跳转到指定命名标签的位置,这个语句较少使用,因为过多的使用会导致程序逻辑的混乱。使用语法如下

--命名标签
<<label>>
--跳转到标签的位置
GOTO [label];

2、NULL与,表示什么也不做,主要是增强程序的可读性,比如在IF语句中增加一个ELSE子句,在语句中指定NULL表示其他条件是什么也不处理。
六、函数
函数必须有一个返回值,语法如下

CREATE OR REPLACE FUNCTION 函数名(参数1 类型, 参数2 类型) RETURN 返回类型 IS 返回变量名 类型
BEGIN 
	statement
	RETURN 返回变量名
END;

可以同过下面执行

EXEC 函数名;

七、触发器
触发器与函数或过程一样,也是一个命名块,是在特定的数据库时间发生时由ORACLE自动调用的。
八、结构化异常处理
九、集合与记录

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值