Mysql数据库存储过程基本语法讲解


本文整理自网络,侵删。

drop procedure sp_name//

在此之前,小编给大家讲述过MYSQL语法的基本知识,本篇内容,小编通过下面的一个实例,给读者们通过实战中的代码讲解一下基本语法的知识。

一般情况下MYSQL以;结尾表示确认输入并执行语句,但在存储过程中;不是表示结束,因此可以用该命令将;号改为//表示确认输入并执行。存储过程如同一门程序设计语言,同样包含了数据类型、流程控制、输入和输出和它自己的函数库。

一.创建存储过程

1.基本语法:

create procedure sp_name()
begin
.........
end

2.参数传递
二.调用存储过程

1.基本语法:

call sp_name()

注意:存储过程名称后面必须加括号,哪怕该存储过程没有参数传递

三.删除存储过程

1.基本语法:

2.注意事项
(1)不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程
四.区块,条件,循环

1.区块定义,常用

begin
......
end;

也可以给区块起别名,如:

lable:begin
...........
end lable;

可以用leave lable;跳出区块,执行区块以后的代码
2.条件语句

if 条件 then
 statement
 else
 statement
 end if;

3.循环语句
(1).while循环

[label:] WHILE expression DO
 
 statements
 
 END WHILE [label] ;

 

(2).loop循环
[label:] LOOP
 
 statements
 
 END LOOP [label];
(3).repeat until循环
[label:] REPEAT
 
 statements
 
 UNTIL expression
 
 END REPEAT [label] ;
五.其他常用命令

1.show procedure status
显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等
2.show create procedure sp_name
显示某一个存储过程的详细信息
下面看一个例子
一、MySQL 创建存储过程

“pr_add” 是个简单的 MySQL 存储过程,这个MySQL 存储过程有两个 int 类型的输入参数 “a”、“b”,返回这两个参数的和

delimiter //   -- 改变分割符

drop procedure if exists pr_add//  -- 若之前创建有这个存储过程则删除

计算两个数之和

create procedure pr_add (a int,b int)
begin
declare c int;
if a is null then
set a = 0;
end if;
if b is null then
set b = 0;
end if;
set c = a + b;
select c as sum;
end
//

二、调用 MySQL 存储过程

call pr_add(10, 20);
执行 MySQL 存储过程,存储过程参数为 MySQL 用户变量。

set @a = 10;
set @b = 20;
call pr_add(@a, @b);
三、MySQL 存储过程特点

创建 MySQL 存储过程的简单语法为:

create procedure 存储过程名字()
(
[in|out|inout] 参数 datatype
)
begin
MySQL 语句;
end;
MySQL 存储过程参数如果不显式指定“in”、“out”、“inout”,则默认为“in”。习惯上,对于是“in” 的参数,我们都不会显式指定。

1. MySQL 存储过程名字后面的“()”是必须的,即使没有一个参数,也需要“()”

2. MySQL 存储过程参数,不能在参数名称前加“@”,如:“@a int”。下面的创建存储过程语法在 MySQL 中是错误的(在 SQL Server 中是正确的)。 MySQL 存储过程中的变量,不需要在变量名字前加“@”,虽然 MySQL 客户端用户变量要加个“@”。

create procedure pr_add
(
@a int, -- 错误
b int -- 正确
)
3. MySQL 存储过程的参数不能指定默认值。

4. MySQL 存储过程不需要在 procedure body 前面加 “as”。而 SQL Server 存储过程必须加 “as” 关键字。

create procedure pr_add
(
a int,
b int
)
as -- 错误,MySQL 不需要 “as”
begin
mysql statement ...;
end;

5. 如果 MySQL 存储过程中包含多条 MySQL 语句,则需要 begin end 关键字。

create procedure pr_add
(
a int,
b int
)
begin
mysql statement 1 ...;
mysql statement 2 ...;
end;

6. MySQL 存储过程中的每条语句的末尾,都要加上分号 “;”

...
declare c int;
if a is null then
set a = 0;
end if;
...
end;

7. MySQL 存储过程中的注释。

阅读剩余部分

相关阅读 >>

mysql的字符集操作命令总结

花式了解---mysql多表查询

浅谈mysql存储引擎选择 innodb与myisam的优缺点分析

mysql聚簇索引和非聚簇索引的区别

mysql哪个版本比较好

关于mysql 时间戳格式化函数from_unixtime的使用说明

如何使用“navicat for mysql

mysql5.7导出数据提示--secure-file-priv选项问题的解决方法

mysql怎么插入多条数据

怎么查看mysql的默认密码是多少

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...