存储过程的使用(二)

目录

带 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参数的变量,然后再调用该存储过程。

程序代码如下图所示。

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

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

相关文章

智慧公厕是如何诞生的?

在城市化进程中,公共卫生设施的建设一直是重要议题之一。而随着科技的不断发展,智慧公厕作为一种创新的解决方案,逐渐成为了现代城市管理的亮点。那么,智慧公厕是如何产生的呢? 一、城市化进程的推动 城市人口的增加和…

排序 “壹” 之插入排序

目录 ​编辑 一、排序的概念 1、排序: 2、稳定性: 3、内部排序: 4、外部排序: 二、排序的运用 三、插入排序算法实现 3.1 基本思想 3.2 直接插入排序 3.2.1 排序过程: 3.2.2 代码示例: 3.2.3…

基于通达信---做T专用算法

什么是做T? 股票做T是股票市场中常见的一种投资策略,也就是股票进行T+0操作,通过当天买进的股票,在当天卖出,是股市中常见的一种超短线的操作。其中T就是指交易日,利用交易日中的股票涨跌来赚取差价。股票做T常见的类型就是正T和倒T。 1、正T 股票做正t就是指先买后卖,…

【Java框架】Spring框架(一)——Spring基本核心(IOC/DI)

目录 Java企业级框架企业级系统EJB概念解析EJB与Spring的恩怨情仇 Spring系统架构1. Data Access/Integration(数据访问/集成)2. Web 模块3. Core Container(Spring 的核心容器)4. AOP、Aspects、Instrumentation 和 M…

javaWeb项目-智能仓储系统功能介绍

项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot 前端:Vue、ElementUI 关键技术:springboot、SSM、vue、MYSQL、MAVEN 数据库工具:Navicat、SQLyog 1、JSP技术 JSP(Jav…

一文讲透彻Redis 持久化

文章目录 ⛄1.RDB持久化🪂🪂1.1.执行时机🪂🪂1.2.RDB原理🪂🪂1.3.小结 ⛄2.AOF持久化🪂🪂2.1.AOF原理🪂🪂2.2.AOF配置🪂🪂2.3.AOF文件…

浅谈 刷算法题时遇到运行超时异常 的解决办法

文章目录 一、背景介绍二、解决办法2.1 C/C 语言2.2 Java 语言2.2.1 ACM模式下 Java的I/O原理 三、模板详情 一、背景介绍 最近在牛客、leetcode 刷算法题时发现一个奇怪的问题,明明解题思路、所用算法与题解一致,并且在本地IDE运行是通过的&#xff0c…

【C语言__结构体__复习篇5】

目录 前言 一、结构体基础知识 1.1 结构体的语法形式 1.2 创建结构体变量 1.3 结构体变量的初始化 1.4 点(.)操作符和箭头(->)操作符 二、匿名结构体 三、结构体自引用 四、结构体内存对齐 4.1 内存对齐的规则 4.2 出现结构体内存对齐的原因 4.3 修改默认对齐数 五、结…

Flutter 热修复(Shorebird)

Shorebird:https://docs.shorebird.dev/ 我们都知道安卓原生开发,热修复已经不是什么难题。阿里云,腾讯云已经都有现成的SDK可以接入。 然而Flutter开发还一直没有类似热修复的开发库,无意中看到了Shorebird这个平台&#xff0c…

数据结构 -- 二叉树二叉搜索树

二叉树 二叉树是这么一种树状结构:每个节点最多有两个孩子,左孩子和右孩子 重要的二叉树结构 完全二叉树(complete binary tree)是一种二叉树结构,除最后一层以外,每一层都必须填满,填充时要遵…

C++ 协程 学习笔记

协程的优势就是比线程切换的时间少很多,协程的切换时间是纳秒,而进行切换的时间是微秒 单线程用协程可以轻松的处理并发任务 co_yield和co_await可以将协程暂停下来 resume又把协程激活 如果c函数里有co_await、co_return、co_yield就会自动判定为协程…

【实测】记一次用windows11家庭中文版部署django+vue项目的踩坑之旅

整个过程下来,给我的感觉就和吃了翔一样难受,窒息的感觉,全程没少骂win11的设计者... 因为要调试一些只有在windows才会出现的测试平台bug,于是我耗重金购入了一台顶配windows笔记本。以下是配置: 配置还蛮高的对吧&am…

链表经典算法OJ题目

1.单链表相关经典算OJ题目1:移除链表元素 思路一 直接在原链表里删除val元素,然后让val前一个结点和后一个节点连接起来。 这时我们就需要3个指针来遍历链表: pcur —— 判断节点的val值是否于给定删除的val值相等 prev ——保存pcur的前…

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

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

【网络编程】TCP流套接字编程(TCP实现回显服务器)

一.TCP流套字节相关API. Socket(既能给客户端使用,也能给服务器使用) 构造方法 基本方法: ServerSocket(只能给服务器使用) 构造方法: 基本方法: 二.TCP实现回显服务器. 客户端代码示例: package Demo2;import java.io.IOException; import java.io.InputStream; import j…

一个char类型数字转字符串后引起的惨案

问题现象 嵌入式开发平台&#xff0c;交叉编译链比较老&#xff0c;还不支持 C11 的 to_string 写法&#xff0c;此时想通过模板方式&#xff0c;构造一个通用的 toString 接口&#xff0c;采用了 ostringstream &#xff0c;就出现了问题。 模板接口如下 template <type…

2 逻辑斯蒂回归(分类)

目录 1 理论 逻辑回归假设数据服从伯努利分布&#xff08;二分类&#xff09;,通过极大化似然函数的方法&#xff0c;运用梯度下降来求解参数&#xff0c;来达到将数据二分类的目的。 逻辑斯蒂回归&#xff08;Logistic Regression&#xff09;是一种用于解决分类问题的…

esp32-通过wifi使用timelib库同步时间(三)

库的安装 本文基于platformIO&#xff0c;安装较为简单如下图 实例代码 完整代码如下&#xff0c;如果时间获取超时请使用time1.aliyun.com获取时间。 /** Time_NTP.pde* Example showing time sync to NTP time source** This sketch uses the Ethernet library*/#include …

Kafka入门介绍+集群部署+简单使用

Kafka入门介绍集群部署简单使用 简介核心概念Broker&#xff08;服务节点/实例&#xff09;Producer&#xff08;生产者&#xff09;Topic&#xff08;主题&#xff09;Partition&#xff08;分区&#xff09;Consumer&#xff08;消费者&#xff09;和Consumer Group&#xff…

对组合模式的理解

目录 一、场景1、题目描述 【[案例来源](https://kamacoder.com/problempage.php?pid1090)】2、输入描述3、输出描述4、输入示例5、输出示例 二、实现&#xff08;假的组合模式&#xff09;1、代码2、为什么上面的写法是假的组合模式&#xff1f; 三、实现&#xff08;真的组合…