mysql存储函数的使用方法-mysql中存储过程和存储函数是什么_第1页
mysql存储函数的使用方法-mysql中存储过程和存储函数是什么_第2页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、mysql_mysql中存储过程和存储函数是什么?在mysql中,存储过程和存储函数都是数据库中定义的些SQL语句的集合。其中,存储函数可以通过return语句返回函数值,主要于计算并返回个值;存储过程没有直接返回值,主要于执操作。mysql中的存储过程编写存储过程并不是件简单的事情,但是使存储过程可以简化操作,且减少冗余的操作步骤,同时,还可以减少操作过程中的失误,提效率,因此应该尽可能的学会使存储过程。下主要介绍如何创建存储过程。可以使 CREATE PROCEDURE 语句创建存储过程,语法格式如下:CREATE PROCEDURE ( 过程参数, )过程参数, 格式IN | OUT |

2、 INOUT 语法说明如下:1) 过程名存储过程的名称,默认在当前数据库中创建。若需要在特定数据库中创建存储过程,则要在名称前加上数据库的名称,即db_name.sp_name。需要注意的是,名称应当尽量避免选取与 MySQL 内置函数相同的名称,否则会发错误。2) 过程参数存储过程的参数列表。其中,为参数名,为参数的类型(可以是任何有效的 MySQL 数据类型)。当有多个参数时,参数列表中彼此间逗号分隔。存储过程可以没有参数(此时存储过程的名称后仍需加上对括号),也可以有 1 个或多个参数。MySQL 存储过程持三种类型的参数,即输参数、输出参数和输/输出参数,分别 IN、OUT 和 INO

3、UT 三个关键字标识。其中,输参数可以传递给个存储过程,输出参数于存储过程需要返回个操作结果的情形,输/输出参数既可以充当输参数也可以充当输出参数。需要注意的是,参数的取名不要与数据表的列名相同,否则尽管不会返回出错信息,但是存储过程的 SQL 语句会将参数名看作列名,从引发不可预知的结果。3) 过程体存储过程的主体部分,也称为存储过程体,包含在过程调的时候必须执的 SQL 语句。这个部分以关键字 BEGIN 开始,以关键字 END结束。若存储过程体中只有条 SQL 语句,则可以省略 BEGIN-END 标志。在存储过程的创建中,经常会到个分重要的 MySQL 命令,即 DELIMITER 命

4、令,特别是对于通过命令的式来操作 MySQL 数据库的使者,更是要学会使该命令。在 MySQL 中,服务器处理 SQL 语句默认是以分号作为语句结束标志的。然,在创建存储过程时,存储过程体可能包含有多条 SQL 语句,这些 SQL 语句如果仍以分号作为语句结束符,那么 MySQL 服务器在处理时会以遇到的第条 SQL 语句结尾处的分号作为整个程序的结束符,不再去处理存储过程体中后的 SQL 语句,这样显然不。为解决以上问题,通常使 DELIMITER 命令将结束命令修改为其他字符。语法格式如下:DELIMITER $语法说明如下:$ 是户定义的结束符,通常这个符号可以是些特殊的符号,如两个“?

5、”或两个“¥”等。当使 DELIMITER 命令时,应该避免使反斜杠“”字符,因为它是 MySQL 的转义字符。在 MySQL 命令客户端输如下 SQL 语句。mysql DELIMITER ?成功执这条 SQL 语句后,任何命令、语句或程序的结束标志就换为两个问号“?”了。若希望换回默认的分号“;”作为结束标志,则在 MySQL 命令客户端输下列语句即可:mysql DELIMITER ;注意:DELIMITER 和分号“;”之间定要有个空格。在创建存储过程时,必须具有 CREATE ROUTINE 权限。mysql中的存储函数在 MySQL 中,使 CREATE FUNCTION 语句来创

6、建存储函数,其语法形式如下:CREATE FUNCTION sp_name(func_parameter.)RETURNS typecharacteristic . routine_body其中:sp_name 参数:表存储函数的名称;func_parameter:表存储函数的参数列表;RETURNS type:指定返回值的类型;characteristic 参数:指定存储函数的特性,该参数的取值与存储过程是样的;routine_body 参数:表 SQL 代码的内容,可以 BEGIN.END 来标 SQL 代码的开始和结束。注意:在具体创建函数时,函数名不能与已经存在的函数名重名。除了上述要

7、求外,推荐函数名命名(标识符)为 function_xxx 或者func_xxx。func_parameter 可以由多个参数组成,其中每个参数由参数名称和参数类型组成,其形式如下:IN | OUT | INOUT param_name type;其中:IN 表输参数,OUT 表输出参数,INOUT 表既可以输也可以输出;param_name 参数是存储函数的参数名称;type 参数指定存储函数的参数类型,该类型可以是 MySQL 数据库的任意数据类型。例 1使 CREATE FUNCTION 创建查询 tb_student 表中某个学姓名的函数,SQL 语句和执过程如下:mysql USE

8、test;Database changedmysql DELIMITER /mysql CREATE FUNCTION func_student(id INT(11)- RETURNS VARCHAR(20)- COMMENT 查询某个学的姓名- BEGIN- RETURN(SELECT name FROM tb_student WHERE tb_student.id = id);- END /Query OK,0 rows affected (0.10 sec)mysql DELIMITER ;上述代码中,创建了 func_student 函数,该函数拥有个类型为 INT(11) 的参数 i

9、d,返回值为 VARCHAR(20) 类型。SELECT 语句从tb_student 表中查询 id 字段值等于所传参数 id 值的记录,同时返回该条记录的 name 字段值。创建函数与创建存储过程样,需要通过命令 DELIMITER / 将 SQL 语句的结束符由“;”修改为“/”,最后通过命令 DELIMITER ; 将结束符号修改成 SQL 语句中默认的结束符号。如果在存储函数中的 RETURN 语句返回个类型不同于函数的 RETURNS 句中指定类型的值,返回值将被强制为恰当的类型。如,如果个函数返回个 ENUM 或 SET 值,但是 RETURN 语句返回个整数,对于 SET 成员集的相应的 ENUM 成员,从函数返回的值是字符串。拓展阅读由于存储函数和存储过程的查看、修改、删除等操作乎相同,所以我们不再详细讲解如何操作存储函数了。查看存储函数的语法如下:SHOW FUNCTION STATUS LIKE 存储函数名;SHOW CREATE FUNCTION 存储函数名;SELECT * FROM informat

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论