程序语法

2019年4月20日 星期六
20:41

Procedure Language/SQL

1.语法:
declare
说明部分 (变量说明,游标申明,例外说明)
begin
语句序列 (DML语句)
exception
例外处理语句
end;
例如:
declare (可以忽略不写)
begin
dbms_output.put_line(‘hello world’);
end;





常量和变量的定义

2019年4月22日
21:11
1.变量的基本数据类型就是Oracle的建表时字段的变量如char, varchar2, date, number, boolean, long)
定义语法:
varl char(15);
Psal number(9,2);
说明变量名、数据类型和长度后用分号结束说明语句。
常量定义:married boolean:=true

例如:

PLSQL - 图1


2.引用变量—引用一列
Myname emp.ename%type;
引用型变量,即my_name的类型与myemp表中ename列的类型一样
在sql中使用into来赋值
PLSQL - 图2

3.记录型变量
Emprec emp%rowtype
记录变量分量的引用
emp_rec.ename:=’ADAMS’;

PLSQL - 图3

prec 就是查询出来的一行,使用的时候利用prec.列名 就可以使用
记录类型就是记录一行的数据内容











if分支

2019年4月22日
21:43
语法1:
IF 条件 THEN 语句1;
语句2;
END IF;
语法2:
IF 条件 THEN 语句序列1;
ELSE 语句序列 2;
END IF;
语法3:
IF 条件 THEN 语句;
ELSIF 语句 THEN 语句;
ELSE 语句;
END IF;

PLSQL - 图4


Loop循环

2019年4月22日
21:49
其中语法2比较常用
语法1:
WHILE total <= 25000 LOOP
.. .
total : = total + salary;
END LOOP;
语法2:
Loop
EXIT [when 条件];
……
End loop
语法3:
FOR I IN 1 . . 3 LOOP
语句序列 ;
END LOOP ;


PLSQL - 图5

游标Cursor

2019年5月6日
20:19
在写java程序中有集合的概念,那么在pl/sql中也会用到多条记录,这时候我们就要用到游标,游标可以存储查询返回的多条数据。
语法:
CURSOR 游标名 [ (参数名 数据类型,参数名 数据类型,…)] IS SELECT 语句;
例如:cursor c1 is select ename from emp;
游标的使用步骤:
· 打开游标: open c1; (打开游标执行查询)
· 取一行游标的值:fetch c1 into pjob; (取一行到变量中)
· 关闭游标: close c1;(关闭游标释放资源)
· 游标的结束方式 exit when c1%notfound
· 注意: 上面的pjob必须与emp表中的job列类型一致:

PLSQL - 图6

PLSQL - 图7


存储过程

2019年5月6日
21:08
存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。

创建存储过程语法:
create [or replace] PROCEDURE 过程名[(参数名 in/out 数据类型)] 其中的in/out指的是输入参数还是返回值
AS
begin
PLSQL子程序体;
End;

或者

create [or replace] PROCEDURE 过程名[(参数名 in/out 数据类型)]
is
begin
PLSQL子程序体;
End 过程名;

PLSQL - 图8

PLSQL - 图9


触发器

2019年5月6日
21:26
数据库触发器是一个与表相关联的、存储的PL/SQL程序。每当一个特定的数据操作语句(Insert,update,delete)在指定的表上发出时,Oracle自动地执行触发器中定义的语句序列。

触发器可用于
数据确认
实施复杂的安全性检查
做审计,跟踪表上所做的数据操作等
数据的备份和同步

触发器的类型
语句级触发器 :在指定的操作语句操作之前或之后执行一次,不管这条语句影响了多少行 。
行级触发器(FOR EACH ROW) :触发语句作用的每一条记录都被触发。在行级触发器中使用old和new伪记录变量, 识别值的状态。
语法:
CREATE [or REPLACE] TRIGGER 触发器名
{BEFORE | AFTER}
{DELETE | INSERT | UPDATE [OF 列名]}
ON 表名
[FOR EACH ROW [WHEN(条件) ] ]
begin
PLSQL 块
End 触发器名

PLSQL - 图10