目录
[6.if 判断](#6.if 判断)
什么是PLSQL数据库
PL/SQL(Procedure Language/SQL)是 Oracle 对 sql 语言的过程化扩展,指 在 SQL 命令语言中增加了过程处理语句(如分支、循环等),使 SQL 语言具有 过程处理能力。把 SQL 语言的数据操纵能力与过程语言的数据处理能力结合起来,使得 PLSQL 面向过程但比过程语言简单、高效、灵活和实用。
PL数据库的实现方法
1.首先,启动VMvare虚拟机以启动PLSQL Developer,连接Oracle数据库
2.利用已登录的管理员用户创建新用户(详见之前章节)
3.在DataGrip中编写相应代码,利用虚拟机PLSQL运行,语法见本章下
PL数据库的基本语法
1.作用
plsql也可以实现复杂的业务逻辑
为不直接使用编程语言 而是学习plsql
plsql会比直接使用 编程语言 速度更快
2.语法
[declare
-- 声明变量 (变量名 表名.字段名%type; 引用变量)
]
begin -- PL代码块
-- 代码逻辑
[exception
-- 异常处理
]
end;
3.赋值输出
a:=1; -- 把1赋值给a
select 表中字段 into 变量名 from 表名; -- 变量赋值
dbms_output.put_line('单价:'||变量名); -- 输出
4.引用
声明变量 (变量名 表名.字段名%type; 引用变量)
声明行变量(变量名 表名%rowtype; 引用一行变量)
begin
select * into 变量名 from 表名 where id = 1;
变量名=表名.字段名···(赋值编辑)
end;
5.异常处理
-- 引用行变量where不可筛选多行或不存在的id
exception
when 错误类型 then
输出;
-- 处理
exception
when no_data_found then
dbms_output.put_line('数据找不到!');
when too_many_rows then
dbms_output.put_line('数据太多!');
when other then
dbms_output.put_line('异常:'||sqlcode||sqlerrm);
6.if 判断
-- if 条件 then
-- 业务逻辑
-- elsif 条件 then
-- 业务逻辑
-- else
-- 业务逻辑
-- end if;
7.loop循环
loop/end loop;
loop
dbms_output.put_line(···);
变量=变量+1;
exit when 变量>100;
end loop;
8.while循环
while 条件判断 -- 符合条件才能进入循环
loop
dbms_output.put_line(···);
变量=变量+1;
exit when 变量>100;
end loop;
9.for循环
declare
begin
for 变量 in 起始值..终止值
loop
dbms_output.put_line(···);
end loop;
end;
10.游标
游标是系统为用户开设的一个数据缓冲区,存放 SQL 语句的执行结果。
我们可以把游标理解为 PL/SQL 中的结果集。
declare
行变量 表名%rowtype;
-- 记录数据获取的位置,存储每一行数据
cursor 游标名称 is sql语句;
select * from 表名 where ownertypeid=1;
begin
-- 使用游标语法
open 游标名称 -- 打开游标
loop
业务逻辑(fetch 游标名 into 行变量)
输出 dbms_output.put_line('价格:'||表名.字段名);
exit when 游标名称%notfound
业务逻辑
end loop;
close 游标名称; -- 关闭游标
11.参数游标
declare
cursor 游标名(参数名 number) is select *from 表名 where id列名 = 参数名;
begin
for i in 游标名(1)
loop
dbms_output.put_line('价格:'||i.列名||'吨位:'||i.列名||'吨位:'||i.列名);
end loop;
end;
12.索引
-- 加快查询速度
create index 索引名称 on 表名(列名);
13.分区表
范围分区(range,用时间分区)
HASH 分区(散列分区,不连续)
列表分区
复合分区(范围+HASH)