MySQL存储过程的创建、调用、修改、查询、删除

1 创建

首先我们创建一个简单的测试表tt

CREATE TABLE tt(
	num int
);

插入几个测试数据

INSERT INTO tt(num) VALUE(1),(3),(9);

SELECT * FROM tt;
+------+
| num  |
+------+
|    1 |
|    3 |
|    9 |
+------+

1.1 无参存储过程

创建一个简单的无参存储过程的实例

DELIMITER //

CREATE PROCEDURE p1()
BEGIN
	SELECT * FROM tt;
END //

DELIMITER ;

这里你可能会不明白DELIMITER的作用,其实很简单,他就起到一个标识命令结束符的作用

我们默认使用分号;作为我们的命令结束符,但在存储过程中,你会有涉及多非常多条命令,比如SELECTINSERTUPDATE等等,如果你使用默认的命令结束符,那么在你执行第一条命令结束后,存储过程就结束了,这显然不是我们希望的结果。

那么使用DELIMITER就可以自由命名我们的命令结束符了,一般会使用双正斜杠//或者双美元符$$来作为我们的命令结束符。应用一下:

mysql> DELIMITER //

mysql> INSERT INTO tt(num) VALUE(11);
    -> SELECT * FROM tt//
Query OK, 1 row affected (0.01 sec)

+------+
| num  |
+------+
|    1 |
|    3 |
|    9 |
|   11 |
+------+

这里我们就可以惊喜的看到我们一次就执行了插入、查询两条命令。
现在我们回头看到我们的实例

DELIMITER //

CREATE PROCEDURE p1()
BEGIN
	SELECT * FROM tt;
END //

DELIMITER ;

这里使用DELIMITER命名了//作为命令结束符,最后再用DELIMITER回到我们熟悉的命令结束符;

1.2 有参存储过程

DELIMITER //

CREATE PROCEDURE p2(new_num INT)
BEGIN
	INSERT INTO tt(num) VALUE(new_num);
	SELECT * FROM tt;
END//

DELIMITER ;

可以把存储过程看成一个函数,在p2()括号内添加参数名和参数类型

2 调用

调用很简单,使用CALL

CALL p1()     #无参的存储过程;
CALL p2(17)   #有参的存储过程;

可以看到,调用方法跟函数一样,另外对于无参的存储过程,可以直接使用存储过程名称,即

CALL p1;

3 修改

要想修改存储过程的内容或名称,需要先删除原先的存储过程在重新创建

4 查询

查询所有的存储过程

SHOW PROCEDURE STATUS;

当然我们也可以添加使用LIKE子句查找特定存储过程

SHOW PROCEDUrE STATUS LIKE 'p1';

另外,如果要查看存储过程创建时的定义的话:

SHOW CREATE PROCEDURE p1; 

5 删除

DROP PROCEDURE p1;

6 参考

C语言中文网中MYSQL教程的视图、索引、存储过程和触发器

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值