存储过程的使用(二)

目录

带 OUT 参数的存储过程

输入一个编号,查询数据表 emp中是否有这个编号,如果有返回对应员工姓名,如果没有,则提示没有对应员工

使用 EXEC 命令或者 PRINT执行含有 OUT参数的存储过程

使用 PL/SQL 块编辑程序调用含有 OUT 参数的存储过程

带 IN OUT 参数的存储过程

使用 IN OUT 参数,创建一个存储过程,计算传入数值的绝对值

使用 PL/SQL 块编辑程序调用含有 IN OUT参数的存储过程


Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645

带 OUT 参数的存储过程

上一部分介绍的是使用 IN参数可以向存储过程中的程序单元输入数据,在调用的时候提供参数值,被存储过程读取,

然而有的时候程序单元运行的结果可以传递到外部,例如查询数据表内容从程序中送到外部调用。

这个时候可以使用 OUT参数,在存储过程中定义这种参数时,关键字 OUT 写在参数名称之后。

下面通过具体范例来看一下如何使用。

输入一个编号,查询数据表 emp中是否有这个编号,如果有返回对应员工姓名,如果没有,则提示没有对应员工

分析:

这个示例在上一部分中是使用IN参数定义一个输入,然后定义局部变量,查询的结果是送到局部变量中,

在程序体中显示。现在我们就使用 OUT参数,将结果从程序中送到外部调用处。

存储过程代码如下图所示

如上所示,在存储过程中定义了两个参数,参数var empno 是 IN 参数,接收来自外部数值,参数var_ename 是 OUT参数,在程序内接受查询的结果,

然后通过这个参数传递到调用者。上面介绍了 OUT参数的使用,那么如何调用含有 OUT参数的存储过程呢?

它不像不含参数和包含IN 参数的存储过程,无法直接调用。

含有 OUT参数的存储过程在调用之前,必须定义一个相应类型的变量。

下面通过两种方法演示调用的方法

使用 EXEC 命令或者 PRINT执行含有 OUT参数的存储过程

在使用命令之前,必须使用 VARIABLE 关键字声明对应变量,来存储 OUT参数相应的返回值。

例如上面这个过程中有一个 OUT参数 var name,应先定义对应的变量,如下图所示。

如上图所示,调用的时候,使用“:”后面紧跟变量名。

可以看出,当输入的 IN 参数数值是“7389’的时候,提示“没有对应此编号的员工”;当输入的 IN 参数数值是“7369”的时候,

数据表中是存在这条记录的,因此返回所查询的结果。

但是我们看到程序并没有显示结果,而是显示“PL/SQL过程已成功完成”。

那么如何显示结果呢,可以使用如下方式。

SELECT :var_name FROM dual;

即可以显示出所返回 OUT参数对应变量的结果。

此外,还可以使用 PRINT命令打印变量的内容,如下所示

PRINT var_name

使用 PL/SQL 块编辑程序调用含有 OUT 参数的存储过程


因为存储过程中还有 OUT参数,因此调用之前要定义相应的变量,以接受调用后传送过来的运行结果。

程序代码及结果如下图所示。

如上图所示,在调用的 PL/SQL块中,定义了变量以获取返回的 OUT参数的查询结果,然后在程序中显示。

带 IN OUT 参数的存储过程

通过前面的范例可以看出,IN 参数接收来自外部调用的数值,在程序内部不能修改;而 OUT参数在存储过程中获得运行结果,

通过外部调用把结果送出,但不能接收来自外部的值。IN OUT参数同时具有 IN 参数和 OUT参数的特点,

既可以接收来自外部的值,也可以在存储过程中被修改,把获取的内容传递到外部调用的变量中。

下面通过一个范例来看一下它的使用。

使用 IN OUT 参数,创建一个存储过程,计算传入数值的绝对值


分析:

我们可以在存储过程中只定义一个参数,设置该参数为IN OUT 参数,接收来自外部调用的然后在存储过程中计算其绝对值并把结果放到该参数中。

程序代码及运行结果如下图所示

如上图所示,存储过程内容很简单,定义了一个IN OUT参数 var_num 变量,该变量接收来自外部的变量值,然后在存储过程中计算绝对值,再把结果返回到该参数中。

下面就介绍一下如何调用。

调用的方法也有两种,我们分别来看一下(1)使用 EXEC 命令或者 PRINT 执行含有 IN OUT 参数的存储过程同样,

在使用 EXEC 命令或者 PRINT之前,要定义一个变量以对应存储过程中的 IN OUT 参数。调用代码如下所示。

如上图所示,实现了在存储过程中计算传入数值的绝对值并通过同一参数把结果传回。

使用 PL/SQL 块编辑程序调用含有 IN OUT参数的存储过程

同样,在 PL/SQL块中要定义对应于 IN OUT参数的变量,然后再调用该存储过程。

程序代码如下图所示。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JAVA 项目<果园之窗>_2

上节主要是理论流程,这次直接用实际例子过一遍整个流程 目标是向数据库添加一个员工 上述是前端页面,点击保存 浏览器向我后端发送http请求 后端这一部分专门接收employee请求 在这里对http post请求进行转换成JAVA数据,并处理数据&#xff…

Spring Boot后端与Vue前端融合:构建高效旅游管理系统

作者介绍:✌️大厂全栈码农|毕设实战开发,专注于大学生项目实战开发、讲解和毕业答疑辅导。 🍅获取源码联系方式请查看文末🍅 推荐订阅精彩专栏 👇🏻 避免错过下次更新 Springboot项目精选实战案例 更多项目…

python_列表和元组

介绍 列表(List)和元组(Tuple)是Python中两种不同的数据结构,它们都可以用来存储一系列的元素。下面是它们的主要特点和区别: 列表(List) 可变性:列表是可变的&…

广西模板厂有哪些厂家

在广西地区,建筑行业蓬勃发展,建筑模板作为建筑施工的重要材料,需求量逐渐增加。在这个市场中,贵港市能强优品木业有限公司以其卓越的产品质量和丰富的生产经验而闻名,成为广西地区的知名建筑模板生产厂家。 作为一家具…

OpenCV4.9使用 inRange 的阈值操作

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV4.9​​​​基本阈值操作 下一篇:利用OpenCV4.9制作自己的线性滤波器! ​目标 在本教程中,您将学习如何: 使用 OpenCV cv:&#xff…

【错题集-编程题】大数乘法(模拟 + 高精度乘法)

题目链接:大数乘法_牛客题霸_牛客网 (nowcoder.com) 一、分析题目 根据列竖式运算的过程模拟即可,但是我们可以改进⼀下列竖式的过程: 先计算⽆进位相乘并且相加后的结果;然后再处理进位。 细节:题目所给的两个字符串…

OpenHarmony 视频播放开发教程~

介绍 本示例主要展示了网络视频播放的相关功能。使用ohos.multimedia.avsession等接口实现视频播放的功能。 效果预览 主页 使用说明 点击播放按钮,应用的播放状态发生变化。点击暂停按钮,应用的播放状态开始变化。点击上一个按钮,界面展…

Ribbon 添加快速访问区域

添加快速访问区域挺简单的,实例如下所示: void QtRightFuncDemo::createQuickAccessBar() { RibbonQuickAccessBar* quickAccessBar ribbonBar()->quickAccessBar(); QAction* action quickAccessBar->actionCustomizeButton(); act…

如何查找一篇英文文献的源代码?(论文中没有源代码链接时)如何查找一篇论文的实现代码从而复现论文?

有两个网址,从这两个网址里面能找到论文相关代码,但不确定是不是人家论文里的源代码,但是根据论文实在找不到的情况下,只能试试这两个网址了 1. https://paperswithcode.com/ 2. https://www.catalyzex.com/

团队协作:如何利用 Gitee 实现多人合作项目的版本控制

文章目录 前言一、名词解释1、Git是什么?2、Gitee、GitHub和GitLab 二、操作步骤1.安装Git2.创建Gitee仓库3.用vscode连接仓库4. 克隆远程仓库 总结 前言 在软件开发中,有效地管理代码是至关重要的。Gitee 是一个功能强大的代码托管平台,提供…

Sentinel 流控注解使用

大概原理:通过反射解析注解 SentinelResource信息完成调用,处理方法,类似AOP编程 处理方法的返回类型要保持一致,参数和顺序保持一致, 可以在参数列表最后加 com.alibaba.csp.sentinel.slots.block.BlockException; …

探索C语言数据结构:利用顺序表完成通讯录的实现

在好久之前我就已经学习过顺序表,但是在前几天再次温习顺序表的时候,我惊奇的发现顺序编表可以完成我们日常使用的通讯录的功能,那么今天就来好好通过博客总结一下通讯录如何完成吧。 常常会回顾努力的自己,所以要给自己的努力留…

【JavaSE】浅谈Java异常

前言 本篇文章是对Java异常体系相关内容及部分注意事项的的讲解。 一. 认识异常 在每个人的生命历程中,或多或少都会遇到生病或受伤的情况,比如:皮肤擦伤、感冒、发烧、患上某些传染病等等。不管“病情”严重与否,这些都可以算…

数据链路层协议——以太网协议

目录 要解决的问题 以太网协议 以太网帧格式 MAC地址 MAC地址和IP地址 MTU MTU对IP协议的影响 MTU对UDP协议的影响 MTU对TCP协议的影响 ARP协议 ARP协议格式 ARP协议的工作流程 ARP缓存表 要解决的问题 上一篇我们也说了,数据从应用层一步步封装到了网…

leetcode:滑动窗口----3. 无重复字符的最长子串

给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2: 输入: s "bbbbb" 输出: 1 解释: 因为…

工业现场ModbusTCP转EtherNETIP网关引领生物现场领新浪潮

生物质发生器是一种能够产生、培养生物的设备。客户现场需要将生物发生器连接到罗克韦尔系统,但是二者协议无法直接通讯,需要通过开疆智能ModbusTCP转Ethernet/IP网关将两者进行通讯连接,生物质发生器以其独特的工作原理和优势,使…

【命名空间详解】c++入门

目录 命名空间的定义 1.命名空间的正常定义 2.命名空间还可以嵌套 3. 命名空间可以合并 命名空间的使用 1.加命名空间名称及作用域限定符 2.使用using将命名空间中某个成员引入 3.使用using namespace 命名空间名称 引入 输入,输出 输出 命名空间的定义 …

[阅读笔记21][RA-CM3]Retrieval-Augmented Multimodal Language Modeling

这篇论文是meta联合斯坦福在23年4月发表的论文,提出了一个使用外部知识检索增强的多模态模型。 这篇模型提出的RA-CM3模型是第一个能够检索并生成图像文本的多模态模型,在图像文本生成任务上优于现有的多模态模型,同时使用更少的训练量。 RA-…

在PostgreSQL中如何处理大对象(Large Objects),例如存储和检索二进制文件?

文章目录 存储二进制文件为大对象步骤 1:创建一个大对象步骤 2:写入数据到大对象 检索大对象为二进制文件步骤 1:打开大对象以进行读取步骤 2:从大对象读取数据 注意事项 PostgreSQL 提供了对大对象(Large Objects&…

【多线程学习】深入探究阻塞队列与生产者消费者模型和线程池常见面试题

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…