存储过程

2018-10-26  本文已影响0人  E先森哟

一.基础语法

说明

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;

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.流程控制

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

上一篇 下一篇

猜你喜欢

热点阅读