1.创建一个新数据库
create database db5;
use db5;
2.创建一个简单的工作表,并插入数据
create table t(s1 INT);
insert into t values(5);
3. 需要一个分隔符:DELIMITER //
【创建存储过程】
CREATE PROCEDURE p1 () SELECT * FROM t;
【调用存储过程】
CALL p1();
CREATE PROCEDURE p2() SELECT CURRENT_DATE,RAND() FROM t;
调用p2():
CALL p2();
CREATE PROCEDURE p4() SELECT 'Hello,world...';
CALL p4();
【在存储过程中定义参数】in、out、inout
输入的例子:
CREATE PROCEDURE p5(p INT) SET @x=p;
CALL p5(12345);
SELECT @x;
输出的例子:
CREATE PROCEDURE p6(OUT p INT) SET p=-5;
CALL p6(@y);
SELECT @y;
复合语句的例子(inout)
CREATE PROCEDURE p7()
BEGIN
SET @a=5;
SET @b=5;
INSERT INTO t VALUES(@a);
SELECT s1*@a FROM t WHERE s1>[email protected];
END;//
【新SQL语句】
复合语句中声明变量的指令是DECLARE
两个DECLARE语句的例子:
CREATE PROCEDURE p8()
BEGIN
DECLARE a INT;
DECLARE b INT;
SET a=5;
SET b=5;
INSERT INTO t VALUES(a);
SELECT s1*a FROM t WHERE s1>=b;
END;//
含有DEFAULT子句的例子:
CREATE PROCEDURE p10()
BEGIN
DECLARE a,b INT DEFAULT 5;
INSERT INTO t VALUES(a);
SELECT s1*a FROM t WHERE s1>=b;
END;//
1.存储过程的优点:
2.创建存储过程:CREATE PROCEDURE
执行存储过程:CALL
3.创建复杂的存储过程:
(1)复合语句:使用BEGIN...END 复合语句来包含多个语句。
(2)使用DECLARE语句声明一个或多个局部变量。该变量的作用范围在定义它的BEGIN...END 内。声明之后,用SELECT...INTO 或SET命令给变量赋值。(存储过程中的变量名不能与列名一样)
(3)流程控制语句之 条件控制语句:IF语句 和 CASE语句
(4)流程控制语句之 循环控制语句:LOOP语句、WHILE语句、REPEAT语句
① LOOP语句可以被标注,在LOOP循环内的语句一直重复循环直到遇见LEAVE语句被退出。
② 当WHILE语句的表达式为真时,它会重复执行一个语句或语句块。
③ REPEAT语句用于重复执行循环体,一直到指定的条件为真时为止。与WHILE不同的是,无论表达式的条件是否为真,REPEAT循环会至少执行一次。
5.查看存储过程的相关信息
① SHOW CREATE PROCEDURE 可查看存储过程的创建语法等信息。
② SHOW PROCEDURE STATUS 可查看指定的存储过程的特性,包括建立存储过程的数据库、存储过程名称、类型、建立者、建立日期、更改日期等。
6.ALTER 语句可以修改一个存储过程的特征值,必须拥有ALTER ROUTINE 权限才可执行ALTER语句。
7.删除存储过程:DROP PROCEDURE [IF EXISTS] proc_name