Heim  >  Artikel  >  Datenbank  >  实际应用:MySQL5存储过程编写_MySQL

实际应用:MySQL5存储过程编写_MySQL

WBOY
WBOYOriginal
2016-06-01 13:53:411034Durchsuche

  MySql5.0以后均支持存储过程,最近有空,研究了一把这个。

  格式:

CREATE PROCEDURE 过程名 ([过程参数[,...]])
[特性 ...] 过程体 CREATE FUNCTION 函数名 ([函数参数[,...]])
RETURNS 返回类型
[特性 ...] 函数体

  过程参数:

[ IN | OUT | INOUT ] 参数名 参数类型

  函数参数:

参数名 参数类型

  返回类型:

有效的MySQL数据类型即可

  特性:

LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'

  过程体/函数体:格式如下:

BEGIN
有效的SQL语句
END

  我在这里不关心专有的特性,这些与SQL规范不兼容,所以characteristic(特性)的相关内容不作考虑。

  在开发过程中有几点要注意:

  1、存储过程注释:MySQL支持采用--或者/**/注释,其中前者是行注释,后者是段式注释

  2、变量首先用declare申明,其中临时变量可以直接以@前缀修饰以供引用

  3、直接采用MySQL的Administrator管理器编辑时,可以直接采用如下函数文本录入;

  但若在脚本中自动导入存储过程或函数时,由于MySQL默认以";"为分隔符,则过程体的每一句

  都被MySQL以存储过程编译,则编译过程会报错;所以要事先用DELIMITER关键字申明当前段分隔符

  用完了就把分隔符还原。 如下所示:

DELIMITER $$
Stored Procedures and Functions
DELIMITER ;

  4、MySQL支持大量的内嵌函数,有些是和大型商用数据库如oracle、informix、sybase等一致,但也有些函数名称不一致,但功能一致;或者有些名称一致,但功能相异,这个特别对于从这些数据库开发转过来的DBA要注意。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn