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)
相关推荐
Mephisto.java2 小时前
【大数据学习 | Spark】Spark的改变分区的算子
大数据·elasticsearch·oracle·spark·kafka·memcache
远歌已逝5 小时前
维护在线重做日志(二)
数据库·oracle
LKID体14 小时前
Python操作neo4j库py2neo使用(一)
python·oracle·neo4j
斗-匕14 小时前
Spring事务管理
数据库·spring·oracle
一行玩python15 小时前
SQLAlchemy,ORM的Python标杆!
开发语言·数据库·python·oracle
王ASC16 小时前
ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值。ojdbc8版本23.2.0.0驱动BUG【已解决】
数据库·sql·oracle
不爱学习的啊Biao18 小时前
初识mysql数据库
数据库·mysql·oracle
SRC_BLUE_1718 小时前
SQLI LABS | Less-55 GET-Challenge-Union-14 Queries Allowed-Variation 2
oracle·c#·less
.21 小时前
接口 测试
数据库·oracle
LIT-涛1 天前
JavaEE初学07
数据库·oracle·java-ee