015.PL-SQL编程—块

ops/2024/9/20 1:16:33/ 标签: sql, 数据库, pl/sql, oracle, oracle教程, PLSQL Developer, sqlplus

无奋斗不青春

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈
入 门 教 程 推 荐 :👉👉 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 --关闭输出选项-- 最简单的块内容开始
    begindbms_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 thendbms_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 thendbms_output.put_line('员工编号有误,请重新输入!');
    end;
    
  • 在这里插入图片描述

  • 在这里插入图片描述


http://www.ppmy.cn/ops/108646.html

相关文章

[网络]TCP/IP五层协议之应用层,传输层(上)

文章目录 一. 应用层二. 传输层端口号传输层的协议UDPTCPTCP报头TCP协议的核心机制 一. 应用层 应用层是和应用程序直接相关, 和程序猿打交道最多的一层 应用层协议, 里面描述的内容, 就是你写的程序, 通过网络具体按照啥样的形式来传输数据 不同的应用程序, 就可以用不同的应…

自适应中值滤波器:图像去噪的高效解决方案

在数字图像处理中,椒盐噪声是常见的干扰之一,它会导致图像出现随机的黑点和白点,严重影响图像质量。传统的中值滤波器虽然在一定程度上能够去除这种噪声,但可能无法完全恢复图像的细节。为此,本文将介绍一种自适应中值…

Vue3+TypeScript二次封装axios

安装如下 npm install axios 第一步:创建config配置文件,用于存放请求后端的ip地址,用于后期打包后便于修改ip地址。 注:typescript要求参数要有类型。(ES6 定义对象 属性 类型 修改的是属性的值) inte…

Android Studio编译时报错:Expecting a top level declaration

Kotlin代码报错:Expecting a top level declaration 查了一圈办法都不管用,后来通过下面的方法解决了。 出现这个错误是因为Android Studio的编译缓存和实际代码不匹配了。也就是代码没问题,不要乱动代码,这时要排除电脑里是不是…

Unity-OpenCV-Imgproc函数概览

OpenCV-Imgproc函数概览 函数名功能描述createLineSegmentDetector创建一个智能指针到 LineSegmentDetector 对象并初始化它。此算法用于检测图像中的线段。getGaussianKernel返回高斯滤波器的系数。这些系数用于平滑图像或进行高斯模糊。getDerivKernels返回计算图像空间导数的…

ASP.Net Core 因集成WebSocket导致Swagger UI显示错误

文章目录 前言一、ApiExplorerSettings二、解决Swagger UI显示问题 前言 Swagger UI 本身并不支持直接展示或测试 WebSocket 端点。Swagger(现在称为 OpenAPI)及其 UI 实现主要是为 RESTful API 设计的,这些 API 基于 HTTP 请求/响应模型。W…

设计模式-行为型模式-模板方法模式

1.模板方法模式定义 模板方法模式在父类中定义了一个算法的框架,允许子类在不修改结构的情况下重写算法的特定步骤;是一种基于继承的代码服用技术,其结构只存在于父类与子类之间的继承关系下; 1.1 模板方法模式的作用 复用性&am…

vba发邮件:如何设置自动化发送电子邮件?

vba发邮件的技巧有哪些?VBA如何调用outlook发邮件? VBA发邮件功能是一个非常实用的工具,能够帮助用户自动发送电子邮件,减少手动操作的时间和错误。AokSend将详细介绍如何通过VBA发邮件来实现自动化发送电子邮件的设置。 VBA发邮…

14、Flink SQL 的 处理时间 详解

处理时间 处理时间是基于机器的本地时间来处理数据,它是最简单的一种时间概念,但是它不能提供确定性;它既不需要从数据里获取时间,也不需要生成 watermark。 在创建表的 DDL 中定义 处理时间属性可以在创建表的 DDL 中用计算列的方式定义,用 PROCTIME() 就可以定义处理…

【题目全解】ACGO排位赛#12

ACGO 排位赛#12 - 题目解析 别问为什么没有挑战赛#11,因为挑战赛#11被贪心的 Yuilice 吃掉了(不是)。 本次挑战赛难度相比较前面几次有所提升。 爆料:小鱼现在已经入职了研发部门,排位赛的算分级制将在未来的几场排位赛…

探索未来住宿体验:酒店触摸开关的科技魅力

在快节奏的现代生活中,人们对于旅行住宿的期待已远不止于基本的休息与安眠,而是更加注重个性化、便捷化与智能化。随着科技的飞速发展,酒店行业也迎来了前所未有的变革,其中,触摸开关作为智能客房的标志性元素&#xf…

漫谈设计模式 [5]:建造者模式

引导性开场 菜鸟:老鸟,我最近在写一个项目,发现很多对象初始化的代码特别复杂,感觉乱糟糟的。有没有什么好的方法能帮我简化这些代码? 老鸟:嗯,你提到的这个问题其实很常见。你有没有听说过设…

详解Spring中的单例模式

Spring框架中的Bean默认是单例的,这意味着容器中只会有一个Bean的实例,被定义为单例的Bean是在Spring IOC容器启动的时候被初始化的,并且只会初始化一次。 Spring提供了几种方式来定义Bean的作用域: singleton:这是默…

无线室内定位系统是通过什么技术实现的呢?

无线室内定位系统作为现代科技的重要组成部分,广泛应用于智能家居、企业管理、医疗护理等多个领域。这些系统通过不同的技术手段实现高精度的室内定位,为用户带来便捷与高效。那么,无线室内定位系统究竟是通过哪些技术实现的呢? 首先&#x…

快速上手基于 BaGet 的脚本自动化构建 .net 应用打包

脚本自动化打包 .net 应用 1. BaGet 介绍1.2 主要特点1.3 使用说明1.3.1 安装与部署1.3.1.1 Docker 部署1.3.1.2 手动部署1.3.1.3 配置 2. 应用举例2.1 推送包2.2 下载包 3. 配置信息3.1 基本配置3.2 其他配置选项 4. 脚本编写4.1 编写 PowerShell 脚本4.2 编写 Bash 脚本4.3 运…

语音识别相关概念

声音如何保存成数字信号? 声音是听觉对声波产生的感知,而声波是一种在时间和振幅上连续的模拟量,本质是介质的振动,,比如空气的振动。那么只需要把这个振动信号记录下来,并用一串数字来表达振动信号振动的…

Python计算机视觉 第8章-图像内容分类

Python计算机视觉 第8章-图像内容分类 8.1 K邻近分类法(KNN) 在分类方法中,最简单且用得最多的一种方法之一就是 KNN(K-Nearest Neighbor ,K邻近分类法),这种算法把要分类的对象(例如一个特征…

C ++ 从单链表到创建二叉树到二叉树的遍历(结构体)

首先我们要了解二叉树的数据结构是什么&#xff0c;本质上二叉树是一个有两个节点的链表&#xff0c;我们先了解的单链表的相关定义 单链表 创建一个朴素的单链表 #include <iostream>using namespace std;struct Node{int val;Node* next;Node(int x) : val(x), next(…

【LabVIEW学习篇 - 18】:人机界面交互设计02

文章目录 错误处理函数简单错误处理器通用错误处理器清除错误合并错误错误代码至错误簇转换查找第一个错误 鼠标指针 错误处理函数 在LabVIEW中&#xff0c;是通过错误输入簇和错误输出簇来传递错误信息&#xff0c;可以将底层错误信息传递到上层VI。设计人员需要对不同程度的…

Nginx之日志切割,正反代理,HTTPS配置

1 nginx日志切割 1.1 日志配置 在./configure --prefixpath指定的path中切换进去&#xff0c;找到log文件夹&#xff0c;进去后找到都是对应的日志文件 其中的nginx.pid是当前nginx的进程号&#xff0c;当使用ps -ef | grep nginx获得就是这个nginx.pid的值 在nginx.conf中…