赞
踩
第16节 进阶篇——mysql存储过程和函数
学习并实践mysql中的存储过程和函数的创建以及使用方法
存储过程简介
我们常用的操作数据库语言SQL语句在执行的时候需要先编译,然后执行,而存储过程(stored procedure)是一组为了完成特地功能的SQL语句集,经编译后存储在数据库中,用户通过制定存储过程的名字给定参数来调用执行它。
一个存储过程是一个可编程的函数,在数据库中创建并保存。可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时候,存储过程是非常有用的。数据库的存储过程可以看做时候对编程中面向对象方法的模拟。它允许控制数据的访问方式。
存储过程的优点:
1.存储过程增强了SQL语言的功能和灵活性。存储过程可以用流程控制语句编写,有很强的灵活性。可以完成复杂的判断和较复杂的运算。
存储过程允许标准组件是编程,存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句,数据库专业人员可以随时对存储过程进行修改,对应用程序的源代码毫无影响。
存储付出能实现较快的执行速度。
减少网络流量
MySQL 5.0终于开始已经支持存储过程,这样即可以大大提高数据库的处理速度,同时也可以提高数据库编程的灵活性。
一. 创建存储过程和函数
CREATE PROCEDURE 语法和CREATE FUNCTION的语法
CREATE PROCEDURE sp_name([proc_parameter[,...]])
[characteristic...] rountine_body
CREATE FUNCTION sp_name([func_parameter[,...]])
RETURNS type
[characteristic...] rountine_body
proc_parameter:
[IN|OUT|INOUT] param_name type
func_parameter:
param_name type
type:
Any valid MYSQL data type
characteristic:
LANGUAGE SQL
| [NOT]DETERMINISTIC
| {CONTAINS SQL | NO SQL | READS SQL DATA|MODIFIES SQL DATA}
| SQL SECURITY {DEFINER | INVOKER}
|COMMENT 'string'
routine_body:
Valid SQL procedure statement or statement
这些语句用于创建并存储子程序。在mysql5.1中创建子程序,必须具有CREATE ROUTINE权限。并且ALTER ROUTINE和EXECUTE权限被自动授予它的创建者。
默认,子程序和当前数据库相关联。要明确的把子程序和给定数据库关联起来,可以在子程序的时候指定其名字为
db_name.sp_name
如果子程序名和SQL内部函数名一样,定义子程序时候,需要在这个名字和随后括号中级插入一个空格,否则发生语法错误。在之后调用子程序的时候也要插入。因此,便面将存储子程序取名与SQL函数一样的名字。
括号内部的参数必须总是存在,若没有参数,也要使用一个空参数()
每个参数默认都是一个IN(内部)参数,要指定为其他参数,可以在参数名之前使用关键词OUT和INOUT
例子:
CREATE FUNCTION的语法
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。