当前位置: 首页 > news >正文

mysql的存储过程:

mysql的存储过程:

存储过程的概念:

完成特点功能的sql语句的集合。把定义好的sql集合在一个特定的sql的函数当中

每次执行调用函数即可,还可以实现传参的调用

存储过程的语法:

delimiter   $$
#delimiter  开始和结束的语法,$$标志位,可以自定义,不要用汉字,也不要数字开头,不能使用特殊字符开头。
create procedure test1 ()
beginselect * from info1;
end $$
delimiter;
show procedure status where db='xy102';     #查看xy102库中的存储过程
show procedure status like '%test1%';       #%test1%存储过程的名称
call test1;

存储过程的作用:

执行速度比sql语句执行速度更快,执行效率也更高

客户端可以随时调用发放,也可以随后修改

可以对数据库做任何操作。

存储过程传参:

IN      传入参数,调用者向存储过程传入值
out     输出参数    存储过程向调用者传出值     可以是多个值
inout   输入输出,既可以表示存储过程向调用者传出,也可以表示用户向存储过程传入值。
delimiter   $$
create procedure test2 (in uname char(20))
beginselect * from info1 where name = uname;
end $$
delimiter;
call test2('user');

传出参数

delimiter $$
create procedure test4 (out num int)
BEGIN
set num=100;
end $$
delimiter;
​
call test4(@num)
select @num;
​
CREATE TABLE info2 (id int(4));
insert into info2 value(@num);

输入和输出参数:

in  #输入
out #输出
inout   #输入输出
delimiter $$
create procedure test9 (inout str varchar(10))
BEGIN
select str;
#在存储过程当中引用变量无需加@
set str=concat(str);
#替换,把字符进行替换
select str;
end $$
delimiter;
​
set @str='蔡依林';
call test13(@str);
UPDATE info1 set high=@str where id = 3;

存储过程的控制语句:

delimiter $$
create procedure test1 (inout num int)
BEGIN
if num >= 10 
THEN
set num=num-5;
else 
set num=num*2;
end if;
end $$
delimiter;
​
set @num=19;
call test1(@num);
UPDATE info1 set id=@num where high=195;
delimiter $$
create procedure test2 (inout score int,out grade varchar(255))
BEGIN
if score between 85 and 100 
THEN
set grade='优秀';
elseif score between 60 and 84
THEN
set grade='及格';
ELSE
set grade='不及格';
end if;
end $$
delimiter;
​
set @score=92;
call test2(@score,@grade);mysql
INSERT into info3 VALUE(1,@score,@grade);

while:
delimiter $$
create procedure test4 (inout result INT)
BEGIN
declare a int; 
declare i int;
set a=result;
set i=1;
while i<=10
DO
set a=a+10;
set i=i+1;
end while;
set result = a;
end $$
delimiter;
​
set @result=110;
call test4(@result);
select @result;

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • go操作aws s3
  • RemakePython
  • 24年第三届钉钉杯大学生大数据挑战赛
  • PySide(PyQt)使用QPropertyAnimation制作动态界面
  • html实现酷炫美观的可视化大屏(十种风格示例,附源码)
  • 【JS】前端文件读取FileReader操作总结
  • 写代码对人的影响
  • Linux(虚拟机)的介绍
  • vue2 vue3 props 的处理机制
  • 如何利用AI工具获取所有Excel公式?
  • 视频隐写术
  • docker -v 到底和那个一样?type=volume还是type=bind的解释
  • Java环境变量配置详解:从安装到调试
  • 【Vulnhub系列】Vulnhub_Seattle_003靶场渗透(原创)
  • C语言经典习题24
  • canvas 绘制双线技巧
  • Iterator 和 for...of 循环
  • JavaScript异步流程控制的前世今生
  • Java比较器对数组,集合排序
  • Js基础——数据类型之Null和Undefined
  • PHP的Ev教程三(Periodic watcher)
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • text-decoration与color属性
  • 分布式事物理论与实践
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 猴子数据域名防封接口降低小说被封的风险
  • 前端代码风格自动化系列(二)之Commitlint
  • 前端路由实现-history
  • 区块链技术特点之去中心化特性
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 说说动画卡顿的解决方案
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • Nginx实现动静分离
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (BFS)hdoj2377-Bus Pass
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (过滤器)Filter和(监听器)listener
  • (学习日记)2024.01.19
  • (转)jQuery 基础
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • *算法训练(leetcode)第四十七天 | 并查集理论基础、107. 寻找存在的路径
  • ./和../以及/和~之间的区别
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .NET面试题(二)
  • .net与java建立WebService再互相调用
  • .考试倒计时43天!来提分啦!
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d
  • ??如何把JavaScript脚本中的参数传到java代码段中