目录
什么是PLSQL数据库
PL数据库的实现方法
PL数据库的基本语法
1.作用
2.语法
3.赋值输出
4.引用
5.异常处理
6.if 判断
7.loop循环
8.while循环
9.for循环
10.游标
11.参数游标
12.索引
13.分区表
什么是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)