1 / 20
文档名称:

MYSQL存储过程技术.ppt

格式:ppt   页数:20页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

MYSQL存储过程技术.ppt

上传人:陈晓翠 2011/7/21 文件大小:0 KB

下载得到文件列表

MYSQL存储过程技术.ppt

文档介绍

文档介绍:MYSQL存储过程技术
存储过程的概念
为什么使用存储过程
基本创建、删除语法
存储过程中的变量
BEGIN...END复合语句
流程控制结构语句
注释语法
使用权限
条件和异常处理程序
游标
MYSQL存储过程技术
存储过程的概念:
所谓的存储过程就是存储在数据库当中的可以执行特定工作(查询和更新)的一组SQL代码的程序段。

与自定义函数的区别:
自定义函数有且只有一个返回值,就像普通的函数一样,可以直接在表达式中嵌入调用。
存储过程可以没有返回值,也可以有任意个输出参数,必须单独调用。
 
执行的本质都一样。只是函数有如只能返回一个变量的限制。而存储过程可以返回多个。而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。
函数限制比较多,比如不能用临时表,只能用表变量。还有一些函数都不可用等等。而存储过程的限制相对就比较少。
 
一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。
对于存储过程来说可以返回参数,而函数只能返回值或者表对象。
存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。
MYSQL存储过程技术
为什么使用存储过程:
存储过程的优点:
存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
当对数据库进行复杂操作时(如对多个表进行Update、Insert、Query、Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
存储过程可以重复使用,可减少数据库开发人员的工作量。
安全性高,可设定只有某些用户才具有对指定存储过程的使用权。
MYSQL存储过程技术
基本的创建、删除语法:
CREATE PROCEDURE sp_name ([proc_parameter[,...]])   
[characteristic ...] routine_body
默认地,子程序与当前数据库关联。要明确地把子程序与一个给定数据库关联起来,。
 
sp_name 存储过程的名字
proc_parameter指定参数为IN, OUT,或INOUT
characteristic 特征
routine_body 包含合法的SQL过程语句。
DROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name
这个语句被用来移除一个存储程序或函数。即,从服务器移除一个制定的子程序。在MySQL ,你必须有ALTER ROUTINE权限才可用此子程序。这个权限被自动授予子程序的创建者。
IF EXISTS 子句是一个MySQL的扩展。如果程序或函数不存在,它防止发生错误。
MYSQL存储过程技术
基本的创建、调用、删除语法:
delimiter //
DROP PROCEDURE IF EXISTS test //
CREATE PROCEDURE test /* 存储过程名*/
(IN inparms INT, OUT outparams varchar(32)) /* 输入参数*/
BEGIN /* 语句块头*/
DECLARE var CHAR(10); /* 变量声明*/
IF inparms = 1 THEN /* IF条件开始*/
SET var = 'hello'; /* 赋值*/
ELSE
SET var = 'world';
END IF; /* IF结束*/

INSERT INTO t1 VALUES (var); /* SQL语句*/
SELECT name FROM t1 LIMIT 1 INTO outparams;
END
//
delimiter ;
 
call test(1, ***@out);
MYSQL存储过程技术
存储过程的变量:
声明变量:
DECLARE var_name[,...] type [DEFAULT value]
这个语句被用来声明局部变量。要给变量提供一个默认值,需要包含一个DEFAULT子句。值可以被指定为一个表达式,不需要为一个常数。如果没有DEFAULT子句,初始值为NULL。
局部变量的作用范围在它被声明的BEGIN ... END块内。它可以被用在嵌套的块中,除了那些用相同名字声明变量的块。
变量赋值,SET语句:
SET var_name = expr [, var_name = expr] ...
也可以用语句代替SET来为用户变量