PLSQL数据库

目录

什么是PLSQL数据库

PL数据库的实现方法

PL数据库的基本语法

1.作用

2.语法

3.赋值输出

4.引用

5.异常处理

[6.if 判断](#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)
相关推荐
细嗅蔷薇@6 小时前
排序和分⻚(order by 、limit)
数据库·oracle
梦想平凡7 小时前
棋牌游戏技术实战(五):从对局事件重新执行规则,核对棋盘和最终状态
数据库·游戏·oracle
白露与泡影7 小时前
Oracle AI Database 26ai RAC 部署步骤、关键命令与一键脚本
数据库·人工智能·oracle
腾科IT教育10 小时前
Oracle OCP和MySQL OCP怎么选?方向对比指南
mysql·oracle·ocp·oracle ocp·ocp怎么选·mysql ocp
行业研究员20 小时前
Agent Memory降低Token消耗原理解析
数据库·人工智能·oracle·腾讯云·智能体
薛晓刚2 天前
Oracle ADG 备库归档丢了怎么办?RMAN 增量前滚实战
数据库·oracle
阿俊-全栈开发2 天前
LikeShop 版本升级与备份:从旧版平滑迁移的完整步骤
jvm·数据库·oracle·开源·likeshop·likeshop开源商城
蜗牛互联网2 天前
Java Agent 工具调用的 allowlist、参数校验与调用预算
java·开发语言·人工智能·后端·oracle
冰暮流星2 天前
sql之is not null运算符
数据库·sql·oracle
oradh2 天前
Oracle 索引深度解析(从内部原理到实战案例)
数据库·oracle