015.PL-SQL编程—块

news2024/9/21 17:50:05

无奋斗不青春

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈
入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈
虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈
PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈
Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈
优 质 资 源 下 载 :👉👉 资源下载合集 👈👈
优 质 教 程 推 荐:👉👉 Python爬虫从入门到入狱系列 合集👈👈

分隔线
在这里插入图片描述

PL-SQL编程—块

        • 课外小练习

  • 块(block)是pl/sql的基本程序单元,编写pl/sql程序实际上就是编写pl/sql块。要完成相对简单的应用功能,可能只需要编写一个pl/sql块;但是如果要实现复杂的功能,可能需要在一个pl/sql块中嵌套其他的pl/sql块。

  • 块结构示意图

    • pl/sql块由三部分构成:定义部分、执行部分、例外处理部分
    decleare
        /*定义部分:定义常量、变量、游标、例外、复杂数据类型*/
    begin
        /*执行部分:要执行的pl/sql语句和sql语句*/
    exception
        /*例外处理部分:处理运行的各种错误*/
    end;
    
    • 在这里插入图片描述

    • 定义部分从declare开始,该部分可选

    • 执行部分从begin开始,该部分必须

    • 例外处理部分从exception开始,该部分可选

  • pl/sql块实例部分

  • 实例1:只包括执行部分的pl/sql块

    set serveroutput on --打开输出选项
    set serveroutput off --关闭输出选项
    
    -- 最简单的块内容开始
    begin
        dbms_output.put_line('Hello world');
    end;
    
    -- 说明:dbms_output是oracle所提供的包。该包包含一些过程,put_line就是dbms_output包的一个过程
    
    • 在这里插入图片描述

    • set serveroutput on:执行之后会打印结果

    • set serveroutput off:执行之后不会打印结果

  • 实例2:包含定义部分和执行部分的pl/sql、块

    declare
        --定义变量
        v_ename varchar2(5);
    begin
        --执行过程
        select ename into v_ename from emp where empno=&no;
        --将结果输出到控制台
        dbms_output.put_line('员工姓名:'||v_ename);
    end;
    
    • 语句解释
    select ename into v_ename from emp where empno=&no;
    
    • empno=&no:&地址符表示此处的内容从控制台输入获取(no是自己取得变量名)

    • into v_ename:将查询到的结果存储到v_ename这个变量中

    • 在这里插入图片描述

    • 在这里插入图片描述

    • 追加:查询多个信息(员工编号、姓名、工资)

      declare
        --定义变量
        v_ename varchar2(5);
        v_empno varchar2(4);
        v_sal number(7,2);
      begin
        --执行过程
        select ename,empno,sal into v_ename,v_empno,v_sal from emp where empno=&no;
        --将结果输出到控制台
        dbms_output.put_line('员工编号:'||v_empno||' |员工姓名:'||v_ename||' |工资待遇:'||v_sal);
      end;
      
    • 在这里插入图片描述

  • 实例3:包含定义部分、执行部分和例外处理部分的pl/sql块

    • 为了避免pl/sql程序的运行错误,提高pl/sql的健壮性,应该对可能得错误进行处理
    • 比如实例2中,如果输入了不存在的员工编号,就应该做例外处理
    • 相关说明:oracle实现预定义了一些例外,no_data_found就在找不到数据的例外
    declare
      --定义变量
      v_ename varchar2(5);
      v_empno varchar2(4);
      v_sal number(7,2);
    begin
      --执行过程
      select ename,empno,sal into v_ename,v_empno,v_sal from emp where empno=&empno;
      --将结果输出到控制台
      dbms_output.put_line('员工编号:'||v_empno||' |员工姓名:'||v_ename||' |工资待遇:'||v_sal);
    exception
      --异常处理
      when no_data_found then
        dbms_output.put_line('员工编号有误,请重新输入!');
    end;
    
    • 在这里插入图片描述

    • 在这里插入图片描述

课外小练习
  • 修改打印格式,让输出更美观

    declare
      --定义变量
      v_ename varchar2(5);
      v_empno varchar2(4);
      v_sal number(7,2);
    begin
      --执行过程
      select ename,empno,sal into v_ename,v_empno,v_sal from emp where empno=&empno;
      --将结果输出到控制台
      dbms_output.put_line('员工编号'||' |员工姓名'||' |工资待遇');
      dbms_output.put_line(rpad(v_empno,8,' ')||' |'||rpad(v_ename,8,' ')||' |'||rpad(v_sal,8,' '));
    exception
      --异常处理
      when no_data_found then
        dbms_output.put_line('员工编号有误,请重新输入!');
    end;
    
  • 在这里插入图片描述

  • 在这里插入图片描述

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

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

相关文章

Python专项进阶——初步认识Numpy库

NumPy是Numeric Python的缩写,一个优秀的开源科学计算库。 个人理解,NumPy是一个主要围绕着数值数组对象(ndarray)(或叫做矩阵)进行各种操作的对象、函数集合。提供很多实用的数学函数,涵盖线性…

【大数据】Hadoop里的“MySQL”——Hive,干货满满

【大数据】Hadoop里的“MySQL”——Hive,干货满满 文章脉络 Hive架构 HQL 表类型 创建表语法 分区 数据导入导出 函数 内置函数 UDF Java Python 在阅读本文前,请确保已经对Hadoop的三大组件(HDFS、MapReduce、YARN)有…

启动动效流程梳理(一)

因为项目涉及一些启动相关的方案,以及平常处理问题的时候会遇到很多启动响应的问题,所以对启动动效的拉起流程进行一个全面的梳理,同时也借此即会对U版本的动效流程做一个初步的了解吧。 startActivityUnchecked: 启动的流程就先不…

Windows10 如何配置python IDE

Windows10 如何配置python IDE 前言Python直接安装(快速上手)Step1.找到网址Step2.选择版本(非常重要)Step3. 安装过程Step4. python测试 Anaconda安装(推荐)Step1. 找到网址Step2. 下载anacondaStep3. 安装…

动手学深度学习(pytorch)学习记录25-汇聚层(池化层)[学习记录]

目录 汇聚层(池化层):填充和步幅多通道 汇聚层(池化层): 降低卷积层对位置的敏感性,同时降低对空间降采样表示的敏感性。 汇聚层和卷积层的运动方式一样,从左上角向右下角移动指定步幅,汇聚层执行的是“采样”操作。…

【观察】联想数据网络产品线全新升级,构建高质量的AI网络底座

毫无疑问,数字经济时代,算力已成为推动千行百业数字化转型,赋能经济蓬勃发展的重要引擎,同时也成为衡量国家综合实力的重要指标之一。特别是随着以ChatGPT、GPT4为代表的AI大模型的发布,不仅对数据中心基础设施提出了巨…

ZBrush与Blender雕刻功能哪个更好些?

选择正确的3D软件首先会让你的创作过程更加轻松,尤其是在动画或大片电影制作方面。不同的软件提供不同的功能,并倾向于专注于特定领域,如绘画、动画或雕刻。如果你选择了适合你风格和目标的软件,你可以创作出极具创意的作品。 在…

数据结构:浅谈树的遍历方式

遍历的含义就是把树的所有节点(Node)按照某种顺序访问一遍。包括前序,中序,后续,广度优先(队列),深度优先(栈)5 种遍历方法。之所以叫前序、中序、后序遍历&a…

python 学习一张图

python学习一张图,python的特点的是学的快,一段时间不用,忘记的也快,弄一张图及一些入门案例吧。 写一个简单的测试: #!/usr/bin/python # -*- coding: UTF-8 -*- import osdef add_num(a, b):return a bif __name__…

【AIGC】探索超凡记忆:SuperMemory,你的私人智能书签助手!

🧠 构建你的第二大脑:SuperMemory 在这个信息爆炸的时代,我们每天都在互联网上浏览和保存大量的信息,但往往这些宝贵的数据就像被扔进了黑洞,再也没有被回顾和利用。 SuperMemory 开源项目应运而生,旨在解…

深度学习基础案例4--运用动态学习率构建CNN卷积神经网络实现的运动鞋识别(测试集的准确率84%)

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 前言 前几天一直很忙,一直在数学建模中,没有来得及更新,接下来将恢复正常这一次的案例很有意思:在学习动态调整…

Nexus基本介绍

Nexus是Sonatype公司发布的一款强大的仓库(Repository)管理软件,常被用来搭建Maven私服,因此也被称为“Maven仓库管理器”。 Nexus 的Web界面: Nexus的主要功能与优势 仓库管理: Nexus支持多种仓库类型…

初识Verilog HDL其一

VerilogHDL是一种硬件描述语言,以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。 1.1 Verilog基础语法 1.11 逻辑值 0: 逻辑低电平,条件为假&am…

【信号发生器】连续模式和扫描模式下,示波器呈现出来的波形有何区别

信号发生器在“连续模式”和“扫描模式”下输出的波形在示波器中呈现出的波形形状有显著不同,这与它们各自的工作方式密切相关。 1、连续模式(Continuous Mode) ①工作方式:信号发生器在连续模式下输出固定频率、固定幅度的信号…

[AHK]编写Dialog类代替内置的InputBox命令

更灵活的自定义的Dialog类,可以用来平替内置的InputBox命令 AHK v1代码 #requires Autohotkey v1.0 answer : Dialog("输出结果:", "good") MsgBox, % "you answered: " answer ExitAppDialog(Question, DefaultValue :…

Java面试篇基础部分-垃圾回收算法

大厂面试垃圾回收算法详解内容。 JVM内存垃圾对象的确定? Java开发过程中,使用引用计数和可达性分析。来确定一个对象是否是需要被回收的对象,如果是需要被回收的对象则,对其进行垃圾回收,如果不是则说明是存在引用的对象,则不能清理 首先来分析一下引用算法,如果这个时…

web防火墙技术措施有哪些?防火墙主要类型有哪些

网络安全已经成为了一个不可忽视的重要议题。web防火墙是入侵检测系统,入侵防御系统的一种。web防火墙技术措施有哪些?Web应用防火墙,正是守护网络安全的一道坚实屏障。今天就跟着小编一起了解下关于web防火墙。 web防火墙技术措施有哪些&…

[C高手编程] const, volatile, register, inline: 修饰符与关键字全面解析

💖💖⚡️⚡️专栏:C高手编程-面试宝典/技术手册/高手进阶⚡️⚡️💖💖 「C高手编程」专栏融合了作者十多年的C语言开发经验,汇集了从基础到进阶的关键知识点,是不可多得的知识宝典。如果你是即将…

内存管控:内存池篇

目录 1.内存池的工作原理 2.内存池的优势 3.长时间运行的应用和内存碎片 4.代码实践 4.1核心结构(内存池结构) 4.2核心函数 4.2.1创建内存池 4.2.2销毁内存池 4.2.3分配内存块 4.2.4归还内存块入池 内存池(Memory Pool&#xff09…

CMake导入OpenCV检测人脸

基于级联分类器的人脸检测示例"face_detection.cpp"&#xff1a; #include <opencv2/opencv.hpp>int main(int argc,char *argv[]) {// load face classifiercv::CascadeClassifier faceCascade;faceCascade.load(argv[3]);cv::Mat image cv::imread(argv[1]…