首页 > 编程笔记 > MySQL笔记 阅读:38

MySQL CREATE FUNCTION创建存储函数的用法(附带实例)

MySQL 中,创建存储函数使用的语句是 CREATE FUNCTION,基本语法格式如下:
CREATE FUNCTION func_name ( [func_parameter] ) RETURNS type [characteristic ...] routine_body
1) CREATE FUNCTION 为用来创建存储函数的关键字;
2) func_name 表示存储函数的名称;
3) func_parameter 为存储函数的参数列表,参数列表形式如下:
[ IN | OUT | INOUT ] param_name type
其中,IN 表示输入参数,OUT 表示输出参数,INOUT 表示既可以输入也可以输出;param_name 表示参数名称;type 表示参数的类型,该类型可以是 MySQL 数据库中的任意类型。

4) RETURNS type 语句表示函数返回数据的类型;
5) characteristics 指定存储过程的特性,有以下取值:
6) routine_body 是 SQL 代码的内容,可以用 BEGIN…END 来表示 SQL 代码的开始和结束,或者用 RETURN 返回函数的结果。

【实例】创建存储函数,名称为 NameByZip,该函数返回 SELECT 语句的查询结果,数值类型为字符串型,代码如下:
CREATE FUNCTION NameByZip ()
RETURNS CHAR(50)
RETURN  (SELECT s_name FROM suppliers WHERE s_call= '48075');
创建一个存储函数 NameByZip,参数定义为空,返回一个 CHAR 类型的结果。代码的执行结果如下:
mysql> set global log_bin_trust_function_creators=TRUE;
mysql> DELIMITER //
mysql> CREATE FUNCTION NameByZip()
   -> RETURNS CHAR(50)
   -> RETURN   (SELECT s_name FROM suppliers WHERE s_call= '48075');
   -> //
mysql> DELIMITER ;
如果在存储函数中的 RETURN 语句返回一个类型不同于函数的 RETURNS 子句中指定类型的值,返回值将被强制为恰当的类型。比如,如果一个函数返回一个 ENUM 或 SET 值,但是 RETURN 语句返回一个整数,对于 SET 成员集相应的 ENUM 成员,从函数返回的值是字符串。

注意,FUNCTION 中总是默认为 IN 参数。RETURNS 子句只能对 FUNCTION 做指定,对函数而言这是强制的,它用来指定函数的返回类型,而且函数体必须包含一个 RETURN value 语句。

相关文章