存储过程

一.基础语法

说明

delimiter //

一般情况下MYSQL以;结尾表示确认输入并执行语句,但在存储过程中;不是表示结束,因此可以用该命令将;号改为//表示确认输入并执行。

mysql> delimiter //      #定义结束符号为//
mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)
-> BEGIN
-> SELECT COUNT(*) INTO param1 FROM t;
-> END;
-> //                  #//标识存储过程结束
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;           #更换结束符号为;
mysql> CALL simpleproc(@a);
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @a;
+------+
| @a |
+------+
| 3 |
+------+
1 row in set (0.00 sec)

1.创建存储过程

基本语法

CREATE PROCEDURE PROCEDURE_NAME
(
  [in|out|inout] param datatype
)
BEGIN
END;
  • IN 输入参数
    表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值
  • OUT 输出参数
    该值可在存储过程内部被改变,并可返回
  • INOUT 输入输出参数
    调用时指定,并且可被改变和返回

2.调用存储过程

CALL PROCEDURE_NAME()

3.删除存储过程

drop procedure sp_name//

说明:不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程

4.其他常用命令

显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等

show procedure status

显示某一个存储过程的详细信息

show create procedure sp_name

二.数据结构

1.变量

自定义变量
语法

DECLARE param INT DEFAULT 100;

变量分为用户变量系统变量

  • 系统变量又分为会话和全局级变量
  • 用户变量名一般以@开头,滥用用户变量会导致程序难以理解及管理

用户变量的使用

--单变量
SELECT 'Hello World' INTO @x; 
--多变量
SELECT @LEADER_USER_ID:=GROUP_CONCAT(id),@LEADER_USER_NAME:=GROUP_CONCAT(name) FROM USER_INFO WHERE ORG_ID = 'GUANGDONG'; 

2.流程控制

  • 顺序结构
  • 分支结构
    if
    case
  • 循环结构
    for循环
    while循环
    loop循环
    repeat until循环

注:
区块定义,常用
begin
......
end;
也可以给区块起别名,如:
lable:begin
......
end lable;
可以用leave lable;跳出区块,执行区块以后的代码

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 药,对的,就是药。22天行动营对我来说就是药,特效药。 入营前 焦虑,崩溃,习得性无助,这是加入行动营之前的我。我...
    我的笔记阅读 310评论 1 5
  • 深夜在海上孤独的漂泊,惶惶不安。 不是沙漠,而是无垠的大海,波涛汹涌,仿若凶兽在咆哮。三少立于扁舟,遥望远方那一缕...
    半路提笔阅读 427评论 3 2
  • 如何在一个铁环上更快更好的绕线圈?这曾是电子元器件制造过程中的一个瓶颈。 发明家拿到这个问题,迸发出很多思路:利用...
    LeonYan阅读 592评论 1 2