1、存储过程定义:
存储过程是事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程可以简化应用开发 人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。 存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。
2、特点:
封装,复用 : 可以把某一业务SQL封装在存储过程中,需要用到 的时候直接调用即可。
可以接收参数,也可以返回数据 :再存储过程中,可以传递参数,也可以接收返回 值。
减少网络交互,效率提升 : 如果涉及到多条SQL,每执行一次都是一次网络传 输。 而如果封装在存储过程中,我们只需要网络交互一次可能就可以了。
3、基本语法
(1)创建:
(2)调用:
(3)查看:
(4)删除
注意: 在命令行中,执行创建存储过程的SQL时,需要通过关键字 delimiter 指定SQL语句的 结束符。
创建:delimiter //
create procedure my_add(IN a int, IN b int, OUT c int)
begin
if a is null then set a = 0
end if
if b is null then set b = 0
end if
set c = a + b
end
//
delimiter
查看:
方法一:(直接查询,比较实用,查看当前自定义的存储过程)
select `specific_name` from mysql.proc where `db` = 'your_db_name' and `type` = 'procedure'
方法二:(查看数据库里所有存储过程+内容)
show procedure status
方法三:(查看当前数据库里存储过程列表)
select specific_name from mysql.proc
方法四:(查看某一个存储过程的具体内容)
select body from mysql.proc where specific_name = 'your_proc_name'
查看存储过程或函数的创建代码 :
show create procedure your_proc_name
show create function your_func_name
调用:
mysql>set @a = 10
Query OK, 0 rows affected (0.00 sec)
mysql>set @b = 20
Query OK, 0 rows affected (0.00 sec)
mysql>set @c = 0
Query OK, 0 rows affected (0.00 sec)
mysql>select @c
+------+
| @c |
+------+
|0 |
+------+
mysql>call my_add(@a, @b, @c)
Query OK, 0 rows affected (0.00 sec)
mysql>select @a, @b, @c
+------+------+------+
| @a | @b | @c |
+------+------+------+
| 10 | 20 | 30 |
+------+------+------+
1 row in set (0.00 sec)
删除
drop procedure your_proc_name
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)