存储过程

其实就是mysql语句组成的脚本,也就是数据库中保存的一系列SQL命令的集合。

可以使用变量,条件判断,流程控制等

优点
提高性能 减轻网络负担 可以防止对表的直接访问 避免重复编写SQL操作

创建过程

语法格式:

        delimiter //                                          //delimiter 关键字用来指定存储过程的分隔符,默认为\'\';\"

        create  procedure  名称()                    若不指定,编译器会把存储过程当成SQL语句进行处理,从而执行报错

        begin

         .... 功能代码

         end

           //                                                       //结束存储过程

mysql> delimiter //                   //指定分隔符//
mysql> create procedure db9.p1()
    -> begin
    -> select count(*) from db9.user;
    -> end
    -> //
Query OK, 0 rows affected (0.02 sec)

查看存储过程 

1. mysql> show procedure status;

2. mysql> select db,name,type from mysql.proc where name=\"存储过程名\";

mysql> select db,name,type from mysql.proc where name=\"p1\";
+-----+------+-----------+
| db  | name | type      |
+-----+------+-----------+
| db9 | p1   | PROCEDURE |
+-----+------+-----------+
1 row in set (0.00 sec)

调用/删除存储过程

call  存储过程名();                       //存储过程无参数,()可以省略;存储过程有参数,调用时必须传给参数

mysql> call db9.p1() //               //调用存储过程  
+----------+
| count(*) |
+----------+
|       42 |
+----------+
1 row in set (0.01 sec)

Query OK, 0 rows affected (0.01 sec)
mysql> delimiter ;
mysql> call db9.p1();
+----------+
| count(*) |
+----------+
|       42 |
+----------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

drop procedure  存储过程名;

mysql> drop procedure db9.p1;
Query OK, 0 rows affected (0.00 sec)

mysql> select db,name,type from mysql.proc where name=\"p1\";
Empty set (0.00 sec)

 

收藏 打印