PLSQL数据库

news2024/12/23 10:07:13

目录

什么是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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1615289.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql虚拟列问题

1,虚拟列的用途 1.1,虚拟列可以在创建表时定义,并在查询时像普通列一样使用;方便查询数据;比如从复杂的列数据中,解析taskID,使用虚拟列就很方便; 1.2,mapvalue是txt类…

查理·芒格的 100 个思维模型是什么?一文弄懂多元思维模型!

查理芒格,全名查尔斯托马斯芒格,是一位美国投资者、商业人士以及慈善家。他最为人所知的身份是作为伯克希尔哈撒韦公司的副主席,与投资大师沃伦巴菲特共同塑造了该公司的投资风格和成功。芒格以其深厚的智慧、跨学科的思考方式和独到的价值投…

vivado 使用波形 ILA 触发器和导出功能

使用波形 ILA 触发器和导出功能 • 启用自动重新触发 : 选中“ Waveform ”窗口工具栏上的“启用自动重新触发 (Enable Auto Re-Trigger) ”按钮即可在 成功完成触发 上传 显示操作后 , 启用 Vivado IDE 以自动重新装备与“ Waveform ”窗口触发器…

自动化软件测试用例,自动化测试用例设计

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

书生·浦语大模型第二期实战营(5)笔记

大模型部署简介 难点 大模型部署的方法 LMDeploy 实践 安装 studio-conda -t lmdeploy -o pytorch-2.1.2conda activate lmdeploypip install lmdeploy[all]0.3.0模型 ls /root/share/new_models/Shanghai_AI_Laboratory/ln -s /root/share/new_models/Shanghai_AI_Laborato…

浏览器不兼容的问题和通用解决方案

大家好,我是咕噜铁蛋,今天我想和大家聊聊一个在我们日常上网过程中经常遇到的问题——浏览器不兼容。这个问题看似微小,但却常常让我们在浏览网页、使用在线应用时感到困扰。接下来,我将详细分析浏览器不兼容的原因,并…

【雪天鱼】Vitis HLS 学习笔记(1) Pipelining 流水线

文章目录 1 自媒体账号2 Pipelining 流水线2.1 只对最内层的 LOOP_J 循环进行 pipeline2.2 对最外层的 LOOP_I 循环进行 pipeline2.3 对函数 loop_pipeline 进行 pipeline,并对数组A进行分组2.4 思考 1 自媒体账号 目前运营的自媒体账号如下: 哔哩哔哩…

【uniapp】【uview2.0】【u-sticky】Sticky 吸顶

把pages.json文件中的 “navigationStyle"设置为"custom”, 出现的问题是,莫名奇妙多了个 一个高度 解决方法 /* 使用CSS的sticky定位 */ .sticky {/* #ifdef H5 */ position: -webkit-sticky;position: sticky;top: 0; /* 设置距顶部的距离 */z-ind…

《王者荣耀》Hello Kitty 小兵皮肤完整设置指南

王者荣耀与三丽鸥的联动活动上线了 Hello Kitty 小兵皮肤,让我们的峡谷小兵们也能穿上漂亮的衣服啦!这款皮肤极具卡哇伊风格,引起了许多玩家的关注。许多小伙伴都想知道如何使用这款 Hello Kitty 小兵皮肤,今天小编将为大家整理出…

1081. 度的数量(@数位dp)

活动 - AcWing 求给定区间 [X,Y] 中满足下列条件的整数个数:这个数恰好等于 K 个互不相等的 B 的整数次幂之和。 例如,设 X15,Y20,K2,B2,则有且仅有下列三个数满足题意: 172420 182421 202422 输入格式 第一行包含两个整数 X…

恶意软件逆向工程:Ghidra 入门 -第三部分-分析 WannaCry 勒索软件

逆向工程是最受欢迎和最有价值的网络安全/信息安全技能之一。但很少有人能将自己的技能水平发展到精通这一备受追捧的技能。Ghidra 是美国间谍机构 NSA 提供的一种相对较新且免费的逆向工程工具。 在本教程中,我们将研究历史上最臭名昭著的一个恶意勒索病毒&#x…

使用docker部署数据可视化平台Metabase

目前公司没有人力开发数据可视化看板,因此考虑自己搭建开源可视化平台MetaBase。在此记录下部署过程~ 一、镜像下载 docker pull metabase/metabase:latest 运行结果如下: 二、创建容器 docker run -dit --name matebase -p 3000:3000\ -v /home/loc…

vulfocus靶场名称: apache-cve_2021_41773/apache-cve_2021_42013

Apache HTTP Server 2.4.49、2.4.50版本对路径规范化所做的更改中存在一个路径穿越漏洞,攻击者可利用该漏洞读取到Web目录外的其他文件,如系统配置文件、网站源码等,甚至在特定情况下,攻击者可构造恶意请求执行命令,控…

程序员缓解工作压力的小窍门

目录 1.概述 2.工作与休息的平衡 3.心理健康与自我关怀 4.社交与网络建设 1.概述 作为程序员,缓解工作压力是非常重要的。压力太大有可能会写很多bug。我们可以采取以下方法来保持高效和创新,同时维护个人健康和工作热情。 定时休息:保持…

手写Promise实现

手写Promise实现 一、前言二、代码三、测试四、测试结果 一、前言 阅读参考资料,本文整理出使用 构造函数 手撕出 Promise 的方法,在整理过程中不断添加注解以示思路。有错请指出哟,一起进步!!!class 实现 …

【做一名健康的CSDNer】程序员哪几种行为最伤肾(程序员必看)

虽然没有专门针对程序员这一职业群体特有的伤肾行为的研究报道,但根据一般人群的健康风险和生活习惯,程序员由于其特殊的工作模式和环境,可能更容易出现如下伤肾的行为: 熬夜加班: 程序员由于项目进度、bug修复等原因&…

1、opencv介绍与开发环境搭建

1、opencv介绍 OpenCV 是 Intel 开源计算机视觉库,是一个跨平台的开源计算机视觉和机器学习软件库。它由一系列 C 函数和少量 C 类构成,可用于开发实时的图像处理、计算机视觉以及模式识别程序。 该库有 2500 多种优化算法,其中包括一套全面…

HarmonyOS ArkUI实战开发-NAPI 加载原理(上)

笔者在前 6 小结讲述了NAPI 的基本使用,包括同步和异步实现,本节笔者从源码的角度简单讲解一下NAPI 的加载流程,源码版本为 ArkUI 4.0 Release 版本。 hap 工程结构 工程配置签名后打一个 hap 包出来,然后解压该 hap 文件&#…

重发布及路由策略实验

目录 一、实验拓扑 二、实验需求 1、按照图示配置 IP 地址,R1,R3,R4 上使用 loopback 口模拟业务网段 2、R2,R3 和R4运行 oSPF,各自协议内部互通 3、在 RIP 和 oSPF 间配置双向路由引入,要求除 R4 上的…

C++初阶学习第二弹——C++入门(下)

C入门(上):C初阶学习第一弹——C入门(上)-CSDN博客 目录 一、引用 1.1 引用的实质 1.2 引用的用法 二、函数重载 三、内敛函数 四、auto关键字 五、总结 前言: 在上面一章我们已经讲解了C的一些基本…