本教程中所使用的数据库的建表语句都在“SQL教程——索引”这篇文章中,点击链接直达:索引&建表语句

摘要:本文主要介绍SQL语法的存储过程

目录

存储过程和函数

存储过程

一、创建语法

二、调用语法

三、删除语法

四、查看存储过程信息


存储过程和函数

存储过程和函数:类似java中的方法

好处:

  1. 提高代码的重用性

  2. 简化操作

存储过程

含义:一组预先编译好的SQL语句的集合,理解成批处理语句

一、创建语法

create procedure 存储过程名(参数列表)begin存储过程体(一组合法的SQL语句)end

注意:

1、参数列表包含三部分

参数模式    参数名    参数类型

举例:

in stuname varchar(20)

参数模式:

in:该参数可以作为输入,也就是该参数需要调用方传入值

out:该参数可以作为输入,也可以作为返回值

inout:既可以作为输入又可以作为输出,也即该参数需要调用方传入值,又可以当成返回值

2、如果存储过程提仅仅有一句话,begin end可以省略

存储过程的每条SQL语句的结尾要求必须加分号。

存储过程的结尾可以使用 delimiter 重新设置

语法:

delimiter 结束标记

二、调用语法

call 存储过程名(实参列表)

#1.空参列表

#案例1:查处到admin表中5条数据delimiter $create procedure myp1()begininsert into admin(username, 'password') values ('john1', '0000'), ('john1', '0000'), ('john1', '0000'), ('john1', '0000'), ('john1', '0000'),;end $#调用call myp1() $

#2.创建in模式参数的存储过程

#案例1:创建存储过程,根据女神名,查询对应男神信息create procedure myp2(in beautyName varchar(20))beginselect bo.*from boys boright join beauty bon bo.id = b.boyfriend_idwhere b.name = beautyName;end $#调用call myp2('柳岩')$

#3.创建out模式参数的存储过程

#案例1:根据女神名,返回对应男神名create procedure myp3(in beautyName varchar(20), out boyName varchar(20))begin select bo.boyName into boyNamefrom boys boright join beauty bon b.boyfriend_id = bo.idwhere b.name = beautyName;end $set @bName = 3 $    #可以不写call myp3('赵敏', @bName) $select @bName $#案例2:根据女神名,返回对应男神名和男神魅力值create procedure myp4(in beautyName varchar(20), out boyName varchar(20), out userCP int)begin select bo.boyName,  bo.userCP into boyName, userCPfrom boys boright join beauty bon b.boyfriend_id = bo.idwhere b.name = beautyName;end $#调用call myp4('小昭', @bName, @userCP);select @bName, @userCP;

#4.创建intout模式参数的存储过程

#案例1:传入a和b两个值,最终a和b都翻倍并返回create procedure myp5(inout a int, inout b int)beginset a = a * 2;set b = b * 2;end $#调用set @a = 3$set @b = 4$call myp5(@a, @b)$select @a, @b$#Test1:创建存储过程实现传入用户名和密码,插入到admin表中create procedure newUser(in userName varchar(20), in password varchar(20))begin insert into admin(username, password) values(userName, password);end $#调用call newUser('肖航', '844940114')$select * from admin$#Test2:创建存储过程或函数实现传入女神编号,返回女神名称和女神电话create procedure searchBu(in beautyId int, out name varchar(20), out phone varchar(20))begin select b.name, b.phone into name, phonefrom beauty bwhere b.id = beautyId;end $#调用set @beautyId = 2$call searchBu(@beautyId, @name, @phone)$select @name, @phone$

三、删除语法

drop procedure p1;drop procedure p1, p2;

四、查看存储过程信息

desc myp2$ # XXX Table 'girls.myp2' doesn't existshow create procedure myp2$#Test3:创建存储过程或函数实现传入一个日期,格式化成xx年xx月xx日并返回create procedure dateToStr(in da date, out daStr varchar(20))begin select date_format(da, '%y年%c月%d日') into daStr;end$#调用set @da = curdate()$call dateToStr(@da, @daStr)$select @daStr$#Test4:创建存储过程或函数实现传入女神名称,返回:女神 AND 男神 格式的字符串create procedure sheHim(inout she varchar(20))begin    declare him varchar(20);select b.name, bo.boyname into she, himfrom beauty bleft join boys boon b.boyfriend_id = bo.idwhere b.name = she;set she = concat(she, ' AND ', him);end $#调用set @she = '小昭'$call sheHim(@she)$select @she$

SQL教程——存储过程相关推荐

  1. db2 删除存储过程_数据库教程-SQL Server存储过程使用及异常处理

    SQL Server存储过程 存储过程(Procedure)是数据库重要对象之一,也是数据库学习的重点之一.本文,我们以SQL Server为例对存储过程的概念.定义.调用.删除及存储过程调用异常等通 ...

  2. 视频教程-19全新mysql教程零基础入门实战精讲mysql视频DBA数据库视频教程SQL教程-MySQL

    19全新mysql教程零基础入门实战精讲mysql视频DBA数据库视频教程SQL教程 7年的开发架构经验,曾就职于国内一线互联网公司,开发工程师,现在是某创业公司技术负责人, 擅长语言有node/ja ...

  3. mysql is双竖线_MySQL 5.0 新特性教程 存储过程:第二讲

    MySQL 5.0 新特性教程 存储过程:第二讲推荐查看本文HTML版本 什么样的SQL语句在Mysql存储过程中才是合法的呢?你可以创建一个包含INSERT, UPDATE,DELETE, SELE ...

  4. SQL教程——分支结构

    本教程中所使用的数据库的建表语句都在"SQL教程--索引"这篇文章中,点击链接直达:索引&建表语句 摘要:本文主要介绍SQL语法的流程控制结构 目录 流程控制结构 分支结构 ...

  5. SQL Server存储过程输入参数使用表值

    在2008之前如果我们想要将表作为输入参数传递给SQL Server存储过程使比较困难的,可能需要很多的逻辑处理将这些表数据作为字符串或者XML传入. 在2008中提供了表值参数.使用表值参数,可以不 ...

  6. 什么是存储过程?什么是触发器?SQL中存储过程与触发器的区别是什么?

    什么是存储过程?什么是触发器?SQL中存储过程与触发器的区别是什么? 存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名 ...

  7. 完整SQL分页存储过程(支持多表联接)

    Code /*********************************************************   * 作    用:数据分页(完整SQL分页存储过程(支持多表联接)) ...

  8. SQL Server存储过程里全库查找引用的数据库对象(表、存储过程等)

    SQL Server存储过程全库匹配数据库对象(表.存储过程等) 简介 可以通过自定义存储过程sp_eachdb来遍历每个数据库然后结合sys.objects 关联sys.sql_modules后的d ...

  9. MS SQL Server2005存储过程、游标、游标嵌套综合例子

    MS SQL Server2005存储过程.游标.游标嵌套综合例子: 放在这里备忘>>> Java代码 create proc decisionPathRefSchemes as b ...

最新文章

  1. 【Groovy】Groovy 脚本调用 ( 命令行执行 Groovy 脚本并传入参数 | 获取 Groovy 脚本执行参数 )
  2. Oracle 分析及动态采样
  3. 【Python刷题】_10
  4. Nagios 监控系统架设全攻略_转自IBM Developer
  5. python的读取纯文本文件的几种模式
  6. 使用缓冲流有什么好处_使用PVC石笼网有什么好处?
  7. jQuery小测试系列之jQuery基础知识
  8. java各种的不好_译文《最常见的10种Java异常问题》
  9. 学习C++/C的宏与for循环的结合
  10. java将图片传为设定编码值显示(可做刺绣)
  11. 问题:anaconda 中 tensorflow 与tensorflow-gpu 在tf.image.resize_images()上的区别
  12. 1.供给与需求分析(交通流理论)
  13. 图像坐标球面投影_PostGIS空间数据库SRID背景知识 - 地理坐标系(球面坐标系)和投影坐标系(平面坐标系)...
  14. 计算机应用基础课程思政方案,课程思政《计算机应用基础》教学设计.pdf
  15. ambarella misc
  16. 骗子借新浪微博三周年活动为名诈骗
  17. 为什么发动机需要吸入大量的空气?
  18. 能用网络但是个个计算机不能连上,为什么无线网络连接上却不能上网,小编教你电脑连上无线网却不能上网怎么办...
  19. Mysql 中使用UUID做为主键,去掉- 横线
  20. 第一天 :二分查找+移除元素

热门文章

  1. 每一次的脱颖而出都是从点击积累的吧#
  2. 克隆虚拟机修改静态IP不成功解决办法
  3. 写好的pygame游戏打包成exe文件
  4. 递推法之-------核电站问题(超简洁代码!!!)
  5. Windows系统安装部署redis服务器
  6. 跑路了,去东北国企干软件测试一个月的感触
  7. 如何快速提取文件名放在一个excel表里?
  8. 【转】16GB大内存该怎么玩儿?
  9. 台达编码器型号含义_台达松下三菱安川等伺服编码器线用什么型号编码器电缆?...
  10. kubectl get pod -A 报错