oracle 自定义存储过程(非常简单明了)

语法说明

CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN %TYPE, 参数2 IN %TYPE, 参数3 OUT %TYPE)  IS
变量1 %TYPE;
变量2 %TYPE;
BEGIN存储过程执行语句块
END 存储过程名字;

举例说明

1.举一个简单的例子

定义存储过程 easyProcedure 入参为 两个数 出参为 他们的和

create or replace procedure easyProcedure (add1 in NUMBER, add2 in NUMBER, result out NUMBER) is
beginresult := add1  + add2 ;
end easyProcedure;

使用存储过程接着往下看

2.举一个复杂的例子(例子比较复杂,但很实用)

①创建 TYPE 类型 atrr_type

CREATE OR REPLACE TYPE atrr_type  AS OBJECT
(attrId varchar2(40),objType varchar2(40)
);

②将 TYPE 类型 atrr_type 定义为表, 用做接收返回值

CREATE OR REPLACE TYPE attr_table AS TABLE of atrr_type;

③定义存储过程 入参为 objt 出参为 一张表

create or replace procedure selectAttr(objt in varchar2, attr out attr_table) is type_row atrr_type; 
beginattr := attr_table();		-- 初始化返回结果for thisrow in (select attr_id as attrId, obj_type as objType from CPS_OBJ_ATTR where obj_type = objt) loop type_row := atrr_type(thisrow.attrId, thisrow.objType); attr.extend;attr(attr.count) := type_row; end loop;
end selectAttr;

④存储过程的使用 定义一个函数来使用它

create or replace function testPro(objType in varchar2) return attr_table isattr attr_table:=attr_table();
beginselectAttr(objType, attr);return(attr);
end testPro;

⑤调用这个函数

select testPro('truck') from dual;
-- 当函数返回结果为 Table 时, 还可以这么调用
select * from table(testPro('truck'));
 

刚开始写博文,有不足之处请指出;觉得文章实用,请在右上方点个赞


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

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

相关文章

自己公司开发的ERP系统,怎么对接京东,淘宝等这些电商平台?

得益于互联网基建的成熟及快速发展的电子商贸经济,我国线上零售市场快速增长,2022年全国线上零售额达到13.79万亿元,占社会消费品零售总额的比重为27.2%,也就是说每卖出三件零售商品,就有一件是从线上销售。中大型零售…

P1116 车厢重组(冒泡排序)

题目描述 在一个旧式的火车站旁边有一座桥,其桥面可以绕河中心的桥墩水平旋转。一个车站的职工发现桥的长度最多能容纳两节车厢,如果将桥旋转 180 180 180 度,则可以把相邻两节车厢的位置交换,用这种方法可以重新排列车厢的顺序…

手撸任意层神经网络-读从文本s.txt取网络结构初始化neuralNetwork

现代c++读取文本文件,文本文件:"s.txt"中有字符串,如:"{2,4,3,1}",获取数字如:2,4,3,1赋值给变量 vectov<int>La; #include <iostream> #include <vector> #include <fstream> //#include <sstream> #include <random&…

【GPT,Flask】用Python Flask结合OpenAI的GPT API构建一个可自主搭建的内容生成应用网站

【背景】 自己构建模型并进行训练需要很高的知识,技能和资源门槛。如今,通过OpenAI提供的API,则可以快速通过GPT能力构建可以提供内容生成服务的在线网站。这套框架可以提供给用户,用户可以利用该框架在自己的环境(比如自己的公司内)构建内容生成服务。你也可以自己上线…

mac建议装双系统吗,详细分析苹果电脑双系统的利弊

mac建议装双系统吗&#xff0c;Mac电脑上安装双系统有哪些利弊呢&#xff0c;一起来看看吧&#xff01; 苹果Mac电脑安装双系统利&#xff1a; 1、用来办公更加方便&#xff1a;苹果系统功能也是很强大的&#xff0c;但是用来办公非常不方便&#xff0c;是由于一些常用的exe软…

QTableView合并单元格

QtableView的功能 QTableView是Qt框架提供的用于显示表格数据的类。它是基于MVC&#xff08;模型-视图-控制器&#xff09;设计模式的一部分&#xff0c;用于将数据模型和界面视图分离。 以下是一些QTableView的主要特点和功能&#xff1a; 1. 显示表格数据&#xff1a; QTa…

奥本海默

&#xff08;1&#xff09;命 电影一开头&#xff0c;奥本海默不擅长做实验。但你看宿命凑巧不凑巧&#xff0c;奥本海默成了曼哈顿计划的工程负责人&#xff0c;偏偏要他一次性爆炸成功。 电影一开头&#xff0c;奥本海默因为不擅长做实验被导师指出引起其他同学哄堂大笑&…

无涯教程-JavaScript - DATE函数

描述 DATE函数返回特定日期的序列号。 语法 DATE (year, month, day)争论 Argument描述Required/Optionalyear year参数的值可以包含1-4位数字。 Excel会根据计算机使用的日期系统解释年份参数。 默认情况下,Microsoft Excel for Windows使用1900日期系统。 请参阅下面的注…

vue如何获取组件的动态长宽 useResizeObserver用法

工作中遇到了一个需求&#xff0c;tab个数要根据页面的大小动态变化&#xff0c;研究了下&#xff0c;分享下&#xff1a; import { useResizeObserver } from vueuse/core;const tabRef ref();const getData (el) > {if (!el || !el?.length) return;console.log(el[0]…

分类算法系列②:KNN算法

目录 KNN算法 1、简介 2、原理分析 数学原理 相关公式及其过程分析 距离度量 k值选择 分类决策规则 3、API 4、⭐案例实践 4.1、分析 4.2、代码 5、K-近邻算法总结 &#x1f343;作者介绍&#xff1a;准大三网络工程专业在读&#xff0c;努力学习Java&#xff0c;涉…

c++宏定义 define的三个特殊符号#,##,#@

原文链接 x##y表示什么&#xff1f;表示x连接y&#xff0c;举例说&#xff1a; int n Conn(123,456); /* 结果就是n123456;/ char str Conn(“asdf”, “adf”); /结果就是 str “asdfadf”;/ 再来看#x&#xff0c;其实就是给x加上单引号&#xff0c;结果返回是一个const c…

QT连接数据库

目录 数据库 数据库基本概念 常用的数据库 SQLite3基础 SQLite特性&#xff1a; QT连接数据库 1.1 QT将数据库分为三个层次 1.2 实现数据库操作的相关方法 sql语句&#xff08;常用&#xff09; 1&#xff09;创建表格 2&#xff09;删除表格 3&#xff09;插入记录 …

JAVA 时间戳

时间戳&#xff08;Timestamp&#xff09;是一个表示特定时间点的数值&#xff0c;通常指的是自某个固定的起始时间&#xff08;如1970年1月1日00:00:00 UTC&#xff09;以来经过的秒数或毫秒数。 在 Java 中&#xff0c;可以使用 System.currentTimeMillis() 方法获取当前的时…

定时脚本自动自动将文件push到git

写脚本 绝对路径 环境注意 写python&#xff0c;bash脚本执行调用 py程序 定制crontab -e 日志要指定输入文件中 项目地址 https://gitee.com/stdev_1/sshpi10/ bash脚本 #!/bin/bash 设置要监控的仓库路径 #path~/github/ #watch_dir“/home/pi/gittest/ipset/sshpi10” p…

期权交易策略及案例的基本策略有哪些?

目前我国上市交易的期权品种日益丰富&#xff0c;期权的基础的交易方法是建立相应头寸再反向平仓&#xff0c;赚取权利金差价&#xff0c;也可以持有期权到期行权。除了基础的交易方法之外&#xff0c;期权还有一些组合策略&#xff0c;下文介绍期权交易策略及案例的基本策略有…

修改部署后的SSM项目配置文件

修改部署后的SSM项目配置文件 环境配置&#xff1a;window10&#xff0c;JDK8&#xff0c;项目采用SSM编写&#xff0c;部署在tomcat上&#xff0c;maven打包是打成war包 1、找到配置文件 打开tomcat目录 D:\Programming\apache-tomcat-8.5.58\webapps\MyPRO\WEB-INF\class…

docker安装redis实操记录

1.Docker拉取镜像 docker pull redis2.Docker挂载配置文件 创建挂载文件夹 mkdir -p /home/redis/data下载默认配置文件 redis.conf 3.启动redis 容器 docker run --restartalways --log-opt max-size100m --log-opt max-file2 -p 6379:6379 --name redis -v /home/redi…

react16之前diff算法的理解和总结

此篇文章所讨论的是 React 16 以前的 Diff 算法。而 React 16 启用了全新的架构 Fiber&#xff0c;相应的 Diff 算法也有所改变&#xff0c;本片不详细讨论Fiber。 fiber架构是为了支持react进行可中断渲染&#xff0c;降低卡顿&#xff0c;提升流畅度。 react16之前的版本&…

16、Flink 的table api与sql之连接外部系统: 读写外部系统的连接器和格式以及Apache Hive示例(6)

Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…

docker使用(一)生成,启动,更新(容器暂停,删除,再生成)

docker使用&#xff08;一&#xff09; 编写一个 Dockerfile构建镜像构建失败构建成功 运行镜像运行成功 修改代码后再次构建请不要直接进行构建&#xff0c;要将原有的旧容器删除或暂停停止成功删除成功再次构建且构建成功&#xff01; 要创建一个镜像&#xff0c;你可以按照以…