DELIMITER $ #声明结束标记
CREATE PROCEDURE 存储过程名(
[IN 参数名 数据类型,参数名 数据类型...],[OUT 参数名 数据类型,参数名 数据类型...],
[INOUT 参数名 数据类型,参数名 数据类型...]
)
BEGIN
[DECLARE 变量名 数据类型 DEFAULT 初始值;]
执行的逻辑,包括SQL语句
END $
CREATE PROCEDURE 存储过程名(IN 参数名 数据类型,参数名 数据类型...)
CREATE PROCEDURE 存储过程名(OUT 参数名 数据类型,参数名 数据类型...)
CREATE PROCEDURE 存储过程名(IN 参数名 数据类型,参数名 数据类型...,OUT 参数名 数据类型,参数名 数据类型...)
CREATE PROCEDURE 存储过程名(INOUT 参数名 数据类型,参数名 数据类型...)
DELIMITER $
CREATE PROCEDURE myp1()
BEGIN
DECLARE boyName VARCHAR(20) DEFAULT '大忽悠';
SELECT boyName;
END $
#调用
CALL myp1();
DELIMITER $
CREATE PROCEDURE getname(IN id INT(100))
BEGIN
SELECT p.serial FROM payment p WHERE p.id=id;
END $
#调用
CALL getname(1);
DELIMITER $
#两个输入参数,一个输出参数
CREATE PROCEDURE concatStr(IN s1 VARCHAR(50),IN s2 VARCHAR(50),OUT ret VARCHAR(50))
BEGIN
#拼接参数,设计局部变量的值
SET ret=CONCAT(s1,"--->",s2);
END $
#声明一个局部变量,用来接收输出参数的结果
SET @res :="";
#调用
CALL concatStr("小朋友","大忽悠",@res);
#打印输出参数的结果
SELECT @res;
使用有输出参数(有返回值)的存储过程
DELIMITER $
CREATE PROCEDURE myp8(INOUT a INT,INOUT b INT)
BEGIN
SET a=a*2;
SET b=b*2;
END $
#调用
SET @m=10;
SET @n=20;
CALL myp8(@m,@n);
SELECT @m,@n;
DELIMITER $
CREATE PROCEDURE myp1(IN NAME VARCHAR(20))
BEGIN
#声明一个局部变量
DECLARE uoionname VARCHAR(20) DEFAULT '大忽悠';
SET uoionname=CONCAT(NAME,"和",uoionname);
SELECT uoionname;
END $
#调用
CALL myp1("小朋友");
DELIMITER $
CREATE PROCEDURE myp3(OUT NAME VARCHAR(20))
BEGIN
#声明一个局部变量
SELECT SERIAL INTO NAME FROM payment WHERE id =1;
END $
#调用
SET @NAME="";
CALL myp3(@NAME);
SELECT @NAME;
如果,否则
IF...THEN...ELSE...END IF
如果,如果,…否则
IF...THEN...ELSEIF...THEN...ELSEIF...THEN....ELSE...END IF
例子:
DELIMITER $
CREATE PROCEDURE pass(IN i INT(10))
BEGIN
#if语句
IF i<=0 THEN
SELECT "不通过";
ELSE
SELECT "通过";
END IF;
END $
#调用存储过程
CALL pass(1);
DELIMITER $
CREATE PROCEDURE pass1(IN i INT(10))
BEGIN
#if语句
IF i=0 THEN
SELECT "不通过";
ELSEIF i=1 THEN
SELECT "通过";
ELSE
SELECT "你小子想干啥";
END IF;
END $
#调用存储过程
CALL pass1(2);
WHILE....DO...END WHILE
举例:
DELIMITER $
CREATE PROCEDURE pass8(IN num INT(10))
BEGIN
DECLARE i INT(100) DEFAULT 0;
WHILE i<=num DO
SET i=i+1;
END WHILE;
SELECT i;
END$
CALL pass8(5);
SHOW PROCEDURE STATUS;
show create procedure 存储过程名;
drop procedure 存储过程名;
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/m0_53157173/article/details/120386261
内容来源于网络,如有侵权,请联系作者删除!