首页 > 数据库 > MySQL > 正文

MySQL存储过程和函数的操作(十二)

2024-07-24 12:53:45
字体:
来源:转载
供稿:网友

数据库对象表时存储和操作数据的逻辑结构,而数据库对象存储过程和函数,则是用来实现将一组关于表操作的sql语句当作一个整体来执行。在数据库系统中,当调用存储过程和函数时,则会执行这些对象中所设置的sql语句组,从而实现相应功能。
1. 为什么使用存储过程和函数的操作 
    有时针对表的一个完整操作往往不是单条sql语句就可以实现的,而是需要一组sql语句来实现。在具体应用当中,一个完整的操作会包含多条sql语句,在执行过程中需要根据前面sql语句的执行结果有选择地执行后面sql语句。
    存储过程和函数可以简单理解为一条或多条sql语句的集合。存储过程和函数就是事先经过编译并存储在数据库中的一段sql语句集合。
    存储过程和函数有什么区别呢?这两者的主要区别在于函数必须有返回值,而存储过程则没有。存储过程的参数类型远远多于函数的参数类型。 

关于存储过程和函数的优点如下:
      1. 存储过程和函数允许标准组件式编程,提高了sql语句的重用性、共享性和可移植性。
      2. 存储过程和函数能够实现较快的执行速度,能够减少网络流量。
      3. 存储过程和函数可以作为一种安全机制来利用。 

关于存储过程和函数的缺点如下:
      1. 存储过程和函数的编写比单句sql语句复杂,需要用户有更高的技能和更丰富的经验。
      2. 在编写存储过程和函数时,需要创建这些数据库对象的权限。=

2. 创建存储过程和函数 
2.1 创建存储过程语法形式:

语法形式如下:

create procedure procedure_name([procedure_parameter[,...]]) [characteristic...] routine_body//说明:procedure_name参数表示所要创建的存储过程的名字,procedure_parameter参数表示存储过程的参数,characteristic参数表示存储过程的特性,routine_body参数表示存储过程的sql语句代码,可以用begin...end来标志sql语句的开始和结束。//注意:在具体创建存储过程时,存储过程名不能和已经存在的存储过程名重复,推荐存储过程名为procedure_xxx或者proce_xxx;//procedure_parameter 中每个参数的语法形式为:[IN|OUT|INOUT] parameter_name type//该语句中每个参数由三部分组成,分别为输入/输出类型、参数名和参数类型。

characteristic参数的取值为:
language sql
|[not] deterministic
|{constains sql | no sql | reads sql data|modifies sql data}
|sql security {definer | invoker}
|comment 'string'

    1. language sql,表示存储过程的routine_body部分由sql语言的语句组成。为mysql软件所有默认的语句。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表