mysql创建函数实验报告_进阶篇 - MySQL 存储过程和函数

第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的语法

你可能感兴趣的:(mysql创建函数实验报告)