各位用户为了找寻关于mysql创建存储过程及函数详解的资料费劲了很多周折。这里教程网为您整理了关于mysql创建存储过程及函数详解的相关资料,仅供查阅,以下为您介绍关于mysql创建存储过程及函数详解的详细内容
目录
1. 存储过程 1.1. 基本语法 1.2 创建一个指定执行权限的存储过程 1.3 DELIMITER 的使用 2. 创建函数
1. 存储过程
1.1. 基本语法
? 1 2 3create
procedure
name
([params])
UNSIGNED [characteristics] routine_body
params : in|out|inout 指定参数列表 代表输入与输出
routine_body: SQL代码内容,以begin ........ end
characteristics: 指定存储过程特性,包含5种
1 DETERMINISTIC 不确定的 2 NO SQL 没有SQl语句,当然也不会修改数据 3 READS SQL DATA 只是读取数据,当然也不会修改数据 4 MODIFIES SQL DATA 要修改数据 5 CONTAINS SQL 包含了SQL语句
1.2 创建一个指定执行权限的存储过程
? 1 2 3create
DEFINER=`root`@`%`
procedure
name
([params])
UNSIGNED [characteristics] routine_body
DEFINER:指明谁有权力来执行。
1.3 DELIMITER 的使用
”DELIMITER //“ 表示设置“//”符号为结束语,因为mysql中默认语句结束为分号‘;',为了避免存储过程与mysql语句符号冲突,所以有时使用DELIMITER来改变结束语符号,要配合end //来使用;
示例:创建一个root账户执行的存储过程,输出给定字符串的长度
? 1 2 3 4 5 6 7DELIMITER //
CREATE
definer=`root`@`%`
PROCEDURE
`avgFruitPrice`(
in
f_string
VARCHAR
(200)
)
BEGIN
select
length(f_string);
END
//
2. 创建函数
函数的创建与存储过程相同
示例
? 1 2 3 4 5 6 7 8 9DELIMITER //
CREATE
definer=`root`@`%`
FUNCTION
`my_length`(
f_string
VARCHAR
(200)
)
RETURNS
INT
(11)
UNSIGNED
NO
SQL
BEGIN
return
length(f_string);
END
//
注意: 创建函数需要注意3个地方,
1. RETURNS: 需指定返回类型
2. UNSIGNED NO SQL 需指定存储过程特性
3.return: 返回需要的数据
遇见的错误:
如报错如上信息就是没有指定存储过程特性。
存储过程函数中可以通过mysql查询结果为其参数复制: 其语句为select .... into
? 1 2 3 4 5 6 7 8 9 10 11begin
declare
onename
char
(50)
default
‘0';
declare
twoname
char
(50);
select
f_name, b_name
into
onename, twoname
from
t_user
where
id =1;
.......
end
//
说明:
declare: 存储过程及函数内部定义变量
default:默认值
到此这篇关于mysql创建存储过程及函数详解的文章就介绍到这了,更多相关mysql存储过程及函数内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
原文链接:https://blog.csdn.net/qq_32331997/article/details/105603998