MySQL存储过程

来源:互联网 发布:未来人类笔记本知乎 编辑:程序博客网 时间:2024/06/06 02:02

    存储过程(procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。

1、存储过程格式

create procedure 存储过程名称 (参数列表)         beginSQL语句       end//begin、end代表SQL语句的开始和结束

2、分隔符

     MySQL默认以“;”语句结束符(分隔符),如果没有声明分隔符,则编译器会把存储过程当成SQL语句进行处理,因此编译过程会报错,所以要事先用“DELIMITER &&”声明当前段分隔符,让编译器把两个“&&”之间的内容当做存储过程的代码,不会执行这些码;“DELIMITER ;”的意为把分隔符还原。

3、存储过程操作

(1)简单的存储过程

delimiter &&create procedure p1()beginselect * from course;end &&

(2)调用存储过程p1

call p1 &&


(3)查看已有的存储过程

show procedure status \G  //\G横向显示


(4)带一个参数的存储过程

create procedure p3(i int)beginselect * from course where cno>i;end &&

(5)调用带一个参数的存储过程

call p1(3) &&


(6)带两个参数的存储过程(if...else语句)

create procedure p2(i int,j int)beginif j='k' thenselect * from course where cno>i;elseselect * from course where cno<i;end if;end &&

(7)查看带两个个参数的存储过程

call p2(4,3) &&


(8)删除存储过程

call p2(4,3) &&

(9)定义变量

declare i int;

(10)给存储变量赋值

set i=i+1;

4、求和1~n(while语句)


create procedure p3(m smallint)begindeclare i int;declare j int;set i=1;set j=0;while i<=m doset j=j+i;set i=i+1;end while;select j;end &&

计算1~100的和






原创粉丝点击