数据库存储过程

news2025/4/8 21:23:04

存储过程:

是一组为了完成特定功能的sql语句的集合。类似于函数。
写好了一个存储过程之后,我们可以像函数一样随时调用sql的集合。

复杂的,需要很多sql语句联合执行完成的任务。
存储过程在执行上比sql语句的执行速度要快,效率也更高。

创建存储过程:

delimiter $$
create procedure proc ()
begin 
select * from info12;
end $$
delimiter;

delimiter $$(将语句的结束符号从分号,临时改变成两个$$)
create procedure proc ()
创建存储过程proc,不能重复,在当前库中唯一。()里面不定义任何方法。
BEGIN    (过程体开始的关键字)
select * from info;(begin后面跟上的是需要执行的sql语句。)
end $$     (整个语句结束,和上面的定义开始符号一一对应)
delimiter;    (将结束符号恢复成分号)

delimiter的作用保证整个存储过程的中的sql语句能够被完整的执行。否则可能在前面的SQL语句结束运行。

SHOW CREATE PROCEDURE Proc;查看

SHOW CREATE PROCEDURE Proc\G

show procedure status where db='kgc';
show procedure status like '%proc%';查看全库
call proc;调用

drop procedure if exists proc;删除

存储过程的参数运用

1、in输入参数,调用者向存储过程传入值
2、out输出参数,表示存储过程向调用者传出值。(可以返回多个值)
3、INOUT:表示调用者向存储过程传入值,存储过程对传入值可能进行额外的操作之后,返回给调用者。

1传入参数的存储过程 :

mysql> delimiter $$
mysql> create procedure proc3 (in uname char(20))
    -> begin
    -> select * from student where name=uname;
    -> delete from student where name=uname;
    -> select * from student;
    -> end $$
mysql> delimiter ;

call proc3 ('张三');调用传参的存储过程 

2传出参数的存储过程(out)

mysql> delimiter $$
mysql> create procedure test(out num int)
    -> begin
    -> set num=100;
    -> end $$
 mysql> delimiter ;
 

3输入输出参数(inout) 

mysql> create procedure proc5 (inout a int)  
    -> begin
    -> select a;
    -> set a=a+10;
    -> select a;
    -> end $$
delimiter ;

存储过程的控制语句 

 if条件判断语句

mysql> delimiter $$
mysql> create procedure test2(in num int)
    -> begin
    -> if num >=10 then
    -> set num=num-5;
    -> else 
    -> set num=num*2;
    -> end if;
    -> select num;
    -> end $$
mysql> delimiter ;

while循环条件语句 

mysql> delimiter $$                                                                                                       
mysql> create procedure test3 ()
    -> begin
    -> declare a int;
    -> declare i int;
    -> set a=10;
    -> set i=1;
    -> while i<=10 do
    -> set a=a+10;
    -> set i=i+1;
    -> end while ;
    -> select a;
    -> end $$ 
mysql> delimiter ;

注意点:使用存储过程中,在内部变量不需要加@,外部使用和复制要加@,引用变量
              在存储过程begin之后声明变量:declare a INT;declare i INT;声明变量要加数据类 
              型。
               要想使用存储过程里面的结果,必须要out才能传出参数。在声明存储变量是,要 
               定义好参数的传参方式in out INOUT。

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

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

相关文章

09 # 手写 some 方法

some 使用 some() 方法测试数组中是否至少有一个元素通过了由提供的函数实现的测试。如果在数组中找到一个元素使得提供的函数返回 true&#xff0c;则返回 true&#xff1b;否则返回 false。它不会修改数组。 ele&#xff1a;表示数组中的每一个元素index&#xff1a;表示数…

IDA Pro正版多少钱?本文告诉你!

在软件反向工程和安全分析领域&#xff0c;IDA Pro无疑是一款标志性的工具。这款软件在全球范围内有广泛的应用&#xff0c;用于分析、审计和调试各类软件产品。但是&#xff0c;当我们决定购买这款业界顶级的反汇编和反编译软件时&#xff0c;一个最直接也是最现实的问题摆在面…

Oracle Unifier 22.12 ~ 23.10 功能改进清单表

序言 时隔近一年&#xff0c;Oracle Unifier 22还没握熟&#xff0c;新版本23便已迭代到23.10&#xff0c;根据甲骨文常规的发布规律&#xff0c;相信不久之后便会正式迎来正式本地版V23&#xff0c;了解Unfier的朋友或许知晓&#xff0c;本地版是云版迭代一年后的版本&#x…

怎样使用ovsyunlive在web网页上直接播放rtsp/rtmp视频

业务中需要在网页中直接播放rtsp和rtmp视频&#xff0c;多方比较测试发现ovsyunlive的播放器能直接播放rtsp/rtmp视频&#xff0c;还是非常方便简洁&#xff0c;使用过程如下&#xff1a; 1&#xff0c;Windows系统在github上面下载ovsyunlive绿色包下载解压。 github地址&am…

【中国知名企业高管团队】系列62:海信Hisense

昨天&#xff0c;华研荟介绍了海尔公司的发展历程和张瑞敏先生的创业故事&#xff0c;以及现在海尔集团的高管。今天为您介绍同处一地&#xff0c;发展模式类似的海信集团。 一、关于海信Hisense 海信成立于1969年&#xff0c;前身是“国营青岛无线电二厂”&#xff0c;从收音…

第二章《补基础:不怕学不懂线性代数》笔记

2.1 直观理解向量 2.1.1 理解向量加法与数乘 维度相同的向量之间才可以进行加法运算&#xff0c;向 量进行加法运算时只要将相同位置上的元素相加即可&#xff0c;结果向量的维度保持不变。 向量进行数乘运算时将标量与向量的每个元素 分别相乘即可得到结果向量。 2.1.2 理…

《向量数据库指南》——LlamaIndex 和 Milvus Cloud对于 Chat Towards Data Science 的作用

那么,LlamaIndex 是如何帮助我们协调数据检索?Milvus 又如何帮助搭建聊天机器人的呢?我们可以用 Milvus 作为后端,用于 LlamaIndex 的持久性向量存储(persistent vector store)。使用 Milvus Cloud 实例后,可以从一个 Python 原生且没有协调的应用程序转换到由 LlamaIn…

【代码随想录】算法训练计划15

兄弟们&#xff0c;写到了1点了快 1、层序遍历 题目&#xff1a; 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 思路&#xff1a; 左侧也要加进去的&#xff0c;万有右侧没…

stm32 Bootloader设计(YModem协议)

stm32 Bootloader设计&#xff08;YModem协议&#xff09; Chapter1 stm32 Bootloader设计(YModem协议)YModem协议&#xff1a;STM32 Bootloader软件设计STM32 Bootloader使用方法准备工作stm32 Bootloader修改&#xff1a;stm32目标板程序.bin偏移地址修改&#xff1a; Chapt…

YOLO目标检测——铁轨裂纹检测数据集下载分享【含对应voc、coco和yolo三种格式标签】

实际项目应用&#xff1a;安全监控、智能驾驶、人机交互、智能城市数据集说明&#xff1a;&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富&#xff0c;含有图片标签说明&#xff1a;使用lableimg标注软件标注&#xff0c;标注框质量高&#xff0c;含voc(xml)、…

Java对象的浅拷贝

介绍 Java对象的浅拷贝&#xff08;Shallow Copy&#xff09;是指创建一个新的对象&#xff0c;并复制原始对象的所有非静态字段到新对象。如果字段是基本类型&#xff0c;那么复制的就是基本类型的值。如果字段是引用类型&#xff0c;那么复制的就是引用&#xff0c;而不是引…

哪种小型洗衣机好用?迷你洗衣机品牌推荐

随着科技的快速发展&#xff0c;现在的人们越来越注重自己的卫生问题&#xff0c;不仅在吃上面会注重卫生问题&#xff0c;在用的上面也会更加严格要求&#xff0c;而衣服做为我们最贴身的东西&#xff0c;我们对它的要求也会更加高&#xff0c;所以最近这几年较火爆的无疑是内…

立体库堆垛机取货动作控制程序功能

取货动作功能块 为左出货台有货 DB11.DBX0.0 左出货台车就位 DB11.DBX0.2 右出货台车就位 DB11.DBX1.2 为右出货台有货 DB11.DBX1.0 左出货台车就位 DB11.DBX0.2 右出货台车就位 DB11.DBX1.2 T20上升保护时间

看这里!学习苹果手机更改锁屏密码的方法!

锁屏密码是用于保护设备与隐私安全的一项重要措施。用户设置锁屏密码后&#xff0c;在打开手机时需要输入正确的密码才能进入桌面。定期更改锁屏密码可以减少数据泄露的风险&#xff0c;那么&#xff0c;苹果手机更改锁屏密码&#xff1f;当您想要更改Apple设备的锁屏密码时&am…

createElement的用法

目录 一&#xff1a;介绍 二&#xff1a;语法与例子 1、语法 2、一些例子 例1&#xff1a; 例2&#xff1a; 例3&#xff1a; 3、第二种写法 一&#xff1a;介绍 document.createElement()是在对象中创建一个对象&#xff0c;要与appendChild() 或 insertBefore()方法…

js获取当前日期与7天后的日期

调用 console.log(this.getSectionData(7))结果 函数 getSectionData(section) {const now new Date()const nowYear now.getFullYear()const nowMonth now.getMonth() 1 < 10 ? (0 (now.getMonth() 1)) : (now.getMonth() 1)const nowDay now.getDate() < 1…

AJAX 入门笔记

课程地址 AJAX Asynchronous JavaScript and XML&#xff08;异步的 JavaScript 和 XML&#xff09; AJAX 不是新的编程语言&#xff0c;而是一种使用现有标准的新方法 AJAX 最大的优点是在不重新加载整个页面的情况下&#xff0c;可以与服务器交换数据并更新部分网页内容 XML…

GIS入门,xyz地图瓦片是什么,xyz数据格式详解,如何发布离线XYZ瓦片到nginx或者tomcat中

XYZ介绍 XYZ瓦片是一种在线地图数据格式,由goole公司开发。 与其他瓦片地图类似,XYZ瓦片将地图数据分解为一系列小的图像块,以提高地图显示效率和性能。 XYZ瓦片提供了一种开放的地图平台,使开发者可以轻松地将地图集成到自己的应用程序中。同时,它还提供了高分辨率图像和…

RT-Thread 11. Scons 选择不同的编译器编译BSP

1.使用gcc编译工程&#xff0c;生成elf、bin文件 如果是 ARM 平台的芯片&#xff0c;则可以使用 Env 工具&#xff0c;输入 scons 命令直接编译 BSP&#xff0c;这时候默认使用的是 ARM GCC 编译器&#xff0c;因为 Env 工具带有 ARM GCC 编译器。 2.使用template.uvproj 生成…

conda不同环境pip list包都一样问题;conda国内镜像加速

1、conda不同环境pip list包都一样问题 注意是因为conda创建不同环境里用pip安装容易导致&#xff0c;因为pip install安装 python包管理大多都默认到一个地方&#xff0c;正常用conda install就会有隔离 参考&#xff1a;https://blog.csdn.net/tywwwww/article/details/127…