文档章节

mysql 存储过程

eddy_linux
 eddy_linux
发布于 2015/11/05 02:54
字数 738
阅读 10
收藏 0
点赞 0
评论 0
 /*
过程:封装了若干条语句,调用时这个封装体集中执行
函数:是一个有返回值的“过程”
过程是没有返回值的函数
存储过程:把若干条sql语句封装起来,起个名字----过程
把此过程存储在数据库中----存储过程
存储过程的语法
create procedure procedurename()
begin
sql语句
end;
*/
#1 创建基本的procedure
delimiter $
create procedure p1()
begin
select ('hello') from dual;
end$
#查看procedure
show procedure  status;
#调用procedure
call p1();
 mysql> call p1();
+-------+
| hello |
+-------+
| hello |
+-------+
1 row in set
Query OK, 0 rows affected
#存储过程中是可以编程的,可以使用变量、表达式、控制结构来完成复杂的功能
#在存储过程中使用declare声明变量
#--declare 变量名 变量类型 【default 默认值】
#2 设置变量
delimiter $
create procedure p2()
begin
	declare age int default 18;
	declare height int default 180;
	select concat('年龄:',age,'身高:',height);
end$
#删除procedure
drop procedure p2;
call p2();
mysql> call p2
();
+------------------------------------+
| concat('年龄:',age,'身高:',height) |
+------------------------------------+
| 年龄:18身高:180                    |
+------------------------------------+
1 row in set
Query OK, 0 rows affected
#3 运算
delimiter $
create procedure p3()
begin
	declare age int default 18;
	set age := age + 20;
	#declare height int default 180;
	select concat('20年后年龄:', age);
end$
call p3();
mysql> call p3
();
+----------------------------+
| concat('20年后年龄:', age) |
+----------------------------+
| 20年后年龄:38              |
+----------------------------+
1 row in set
Query OK, 0 rows affected
 
# 控制if--else
#if condition then
#statement
#else
#end;
delimiter $
create procedure p4()
begin
	declare age int default 18;
	if age >= 18 then
		select '成年人';
	else
		select '未成年';
	end if;
end$
call p4();
mysql> call p4
();
+--------+
| 成年人 |
+--------+
| 成年人 |
+--------+
1 row in set
Query OK, 0 rows affected

 
#传参
#存储过程()可以声明参数
#【in/out/inout】 参数名  参数类型
delimiter $
create procedure p5(width int,height int)
begin
	select concat('面积:',width * height) as area;
	if width > height then
		select '胖';
	elseif	width < height then
		select '瘦';
	else
		select '方';
	end if;
end$
mysql> call p5(2,1
);
+--------+
| area   |
+--------+
| 面积:2 |
+--------+
1 row in set
+----+
| 胖 |
+----+
| 胖 |
+----+
1 row in set
Query OK, 0 rows affected
mysql> call p5(2,3
);
+--------+
| area   |
+--------+
| 面积:6 |
+--------+
1 row in set
+----+
| 瘦 |
+----+
| 瘦 |
+----+
1 row in set
Query OK, 0 rows affected
mysql> call p5(3
,3);
+--------+
| area   |
+--------+
| 面积:9 |
+--------+
1 row in set
+----+
| 方 |
+----+
| 方 |
+----+
1 row in set
Query OK, 0 rows affected
#控制结构
#顺序、选择、循环
#求1-100的和
delimiter $
create procedure p6()
begin
	declare total int default 0;
	declare num int default 0;
	
	while num <= 100 do
		set total := total + num;
		set num := num + 1;
	end while;
	select total;
end$
call p6();
mysql> call p6(
);
+-------+
| total |
+-------+
|  5050 |
+-------+
1 row in set
Query OK, 0 rows affected
 
#求1-n的和,in表示参数传到存储过程中
delimiter $
create procedure p7(in n int)
begin
	declare total int default 0;
	declare num int default 0;
	
	while num <= n do
		set total := total + num;
		set num := num + 1;
	end while;
	select total;
end$
call p7(100);
 
mysql> call p7(100
);
+-------+
| total |
+-------+
|  5050 |
+-------+
1 row in set
Query OK, 0 rows affected
 
#out 往外输出
delimiter $
create procedure p8(in n int,out total int)
begin
	declare num int default 0;
	set total := 0;
	while num < n do
		set num := num + 1;
		set total := total + num;
	end while;
end$
mysql> call p8(100,@sumary);
Query OK, 0 rows affected
mysql> select @sumary;
+---------+
| @sumary |
+---------+
|    5050 |
+---------+
1 row in set
#inout
set @curage = 18;
delimiter $
create procedure p9(inout age int)
begin
	set age := age + 20;
	
end$
mysql> set @curage = 18;
Query OK, 0 rows affected
mysql> call p9(@curage);
Query OK, 0 rows affected
mysql> select @curage;
+---------+
| @curage |
+---------+
|      38 |
+---------+
1 row in set


© 著作权归作者所有

共有 人打赏支持
eddy_linux
粉丝 18
博文 135
码字总数 188789
作品 0
成都
程序员
MySQL存储过程教程

在本节中,您将逐步学习如何在MySQL中开发存储过程。 首先,我们向您介绍存储过程概念,并讨论何时应该使用它。然后,我们向您演示如何使用过程代码的基本元素,例如:创建存储过程,if-else...

易百教程
2016/10/15
64
0
MySQL 存储过程的基本用法

我们大家都知道MySQL 存储过程是从 MySQL 5.0 开始逐渐增加新的功能。存储过程在实际应用中也是优点大于缺点。不过最主要的还是执行效率和SQL 代码封装。特别是 SQL 代码封装功能,如果没有存...

开心303
2011/08/03
0
2
mysql-储存过程_已迁移

我们大家都知道MySQL 存储过程是从 MySQL 5.0 开始逐渐增加新的功能。存储过程在实际应用中也是优点大于缺点。不过最主要的还是执行效率和SQL 代码封装。特别是 SQL 代码封装功能,如果没有存...

鬼谷子灬
2016/06/29
12
0
MySQL存储过程简介

1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通...

DanEcho
2016/11/15
0
0
PHP调用MYSQL存储过程实例

实例一:无参的存储过程 $conn = mysqlconnect('localhost','root','root') or die ("数据连接错误!!!"); mysqlselectdb('test',$conn); $sql = " create procedure myproce() begin INSERT ......

vga
2014/07/31
0
0
MySQL存储过程中的IN,OUT,INOUT类型

MySQL存储过程中有IN,OUT,INOUT类型 ----------------------------------- ## IN IN参数只用来向过程传递信息,为默认值。 ## MySQL存储过程"in"参数:跟C语言的函数参数的值传递类似,MyS...

木子丰
2014/06/14
0
1
mysql存储过程详解以及PHP调用MYSQL存储过程实例

MySQL存储过程详解 1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储...

james_laughing
2016/12/12
3
0
MySQL存储过程中的IN,OUT,INOUT类型 用法

MySQL存储过程中有IN,OUT,INOUT类型 ----------------------------------- IN IN参数只用来向过程传递信息,为默认值。 MySQL存储过程"in"参数:跟C语言的函数参数的值传递类似,MySQL存储...

MKChan
03/22
0
0
MySQL存储过程详解 mysql 存储过程

mysql存储过程详解 1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储...

鬼方赤命
2015/07/23
0
0
mysql存储过程详解

mysql存储过程详解 1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储...

youcaihua
2016/06/21
19
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

全新内存布局Android5 for one x

众所周知Android5.0默认ART模式,运行速度加倍,软件占用内存也加倍,我们one x这种元老机采用旧的内存布局,data空间2g ART模式下安装几个软件也就不够用了。最近逛国外的xda论坛,发现有大...

CrazyManDF
8分钟前
0
0
web3j转账

 web3 转账功能   为了完成以太坊交易,必须有几个先决条件   1、对方的以太坊地址   2、确定要转账的金额   3、自己地址的转账权限   4、大于转账金额的以太币,以太币转账其实就...

智能合约
9分钟前
0
0
10.28 rsync工具介绍 , rsync常用选项, rsync通过ssh同步

rsync远程同步 重点!重点!!重点!!! 例子 • rsync -av /etc/passwd /tmp/1.txt • rsync -av /tmp/1.txt 192.168.188.128:/tmp/2.txt rsync格式 • rsync [OPTION] … SRC DEST • rs......

Linux_老吴
23分钟前
0
0
iis php 环境搭建,非常详细的教程

准备篇 一、环境说明: 操作系统:Windows Server 2016 PHP版本:php 7.1.0 MySQL版本:MySQL 5.7.17.0 二、相关软件下载: 1、PHP下载地址: http://windows.php.net/downloads/releases/ph...

T_star
25分钟前
0
0
Day35 rsync通过服务同步

rsync通过服务同步 rsyncd.conf配置文件详解 port:指定在哪个端口启动rsyncd服务,默认是873端口。 log file:指定日志文件。 pid file:指定pid文件,这个文件的作用涉及服务的启动、停止等...

杉下
30分钟前
1
0
【最新最全】为 iOS 和 Android 的真机和模拟器编译 Luajit 库

编译 Luajit 库,的确是一个挑战。因为官网的教程,在当前版本的 Xcode 和 NDK 环境中,已经不适用了。以前只是编译了适用于真机的 Luajit 库。最近在尝试编译模拟器 Luajit 库,就顺便梳理了...

ios122
30分钟前
0
0
rsync至ssh同步

rsync: 文件同步工具,可实现“增量拷贝”;使用yum安装rsync包 常用选项:-a=-rtplgoD (-r同步目录,-t保持文件的时间属性,-p保持文件的权限属性,-l保持软连接,-g保持文件的属组,-o保持...

ZHENG-JY
36分钟前
0
0
TradingView 学习笔记

#前言 公司最后需要使用TradingView展示K线图走势。由于之前没接触过,拿到文档时一脸蒙逼。还好找到二篇文章+Demo代码,直接改改就行了。 #被批 由于上面的懵懂,有个问题困扰4个小时没解决...

hihubs
36分钟前
0
0
10.28 rsync工具介绍~10.31 rsync通过ssh同步

rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而...

洗香香
39分钟前
1
0
卷积为什么要旋转180度

参考《最容易理解的对卷积(convolution)的解释》 https://blog.csdn.net/bitcarmanlee/article/details/54729807 这篇博客详细讲解了“卷积”,提及了为什么要反转180度,我简述下。 1.卷积的...

datadev_sh
47分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部