您的位置:首页 > 数据库 > MySQL

MySQL存储过程与函数

2016-08-17 00:00 176 查看
存储过程的好处:

业务逻辑被“隐藏”在数据库里面,从而避免敏感的数据被透露

能简化应用程序代码

跨平台性

如果您必须一次执行几个语句,一个存储过程比客户端程序逐条地执行语句要快的多,因为不需要任何的来往返数据

CREATE

[DEFINER = {user | CURRENT_USER}]

PROCEDURE<name> (PARAMETER(S)...)

[characteristic(s)...] routine_body

The syntax for creating a function is:

CREATE

[DEFINER = {user | CURRENT_USER }]

FUNCTION sp_name ([parameter])

RETURNS type

[characteristic(s)...] routine_body

CREATE 创建

DEFINER 定义者,表示存储过程或者函数的所有者,如果省略,讲使用默认所有者(当前用户)

RPOCEDURE<name> 表示创建一个名字为name的存储过程

FUNCTION<name> 表示创建一个名称为name的函数

【IN | OUT | INOUT】<parameter name> type

IN 指参数是一个输入变量,它仅向过程提供一个值

OUT 指参数是只是用来存储返回值

INOUT 指参数可用于输入变量和返回值

parameter name(参数名称)是Type的类型名

RETURNS 表示返回数据类型

DETERMINISTIC 确定性

NOT DETERMINISTIC 非确定性

实例一、

CREATE PROCEDURE user_avg(OUT average NUMERIC(5,2))
BEGIN
SELECT AVG(age) INTO average FROM users
END;

执行该存储过程:

CALL user_avg(@a);

SELECT @a;

实例二、

CREATE FUNCTION is_young(uuname VARCHAR(64))
RETURNS BOOLEAN
DETERMINISTIC
BEGIN
DECLARE age_check DECIMAL(5,2);
DECLARE is_young BOOLEAN;
SELECT age INTO age_check FROM users WHERE username =uuname;

IF (age_check<40) THEN
SET is_young =1;
ELSE
SET is_young =0;
END IF;

RETURN(is_young);
END



数据库存在的admin1的时候返回1



数据库不存在的admin11的时候返回0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: