mysql创建存储过程及函数详解

大家好,本篇文章主要讲的是mysql创建存储过程及函数详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览

目录

  • 1. 存储过程

    • 1.1. 基本语法
    • 1.2 创建一个指定执行权限的存储过程
    • 1.3DELIMITER 的使用
  • 2. 创建函数

1. 存储过程

1.1. 基本语法

?

1

2

3

create 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

3

create DEFINER=`root`@`%` procedure name ([params])

UNSIGNED [characteristics] routine_body

DEFINER:指明谁有权力来执行。

1.3DELIMITER 的使用

”DELIMITER //“ 表示设置“//”符号为结束语,因为mysql中默认语句结束为分号‘;',为了避免存储过程与mysql语句符号冲突,所以有时使用DELIMITER来改变结束语符号,要配合end //来使用;

示例:创建一个root账户执行的存储过程,输出给定字符串的长度

?

1

2

3

4

5

6

7

DELIMITER //

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

9

DELIMITER //

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创建存储过程及函数详解

如报错如上信息就是没有指定存储过程特性。

存储过程函数中可以通过mysql查询结果为其参数复制: 其语句为select …. into

?

1

2

3

4

5

6

7

8

9

10

11

begin

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

版权声明:本文(即:原文链接:https://www.qin1qin.com/catagory/3813/)内容由互联网用户自发投稿贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 630367839@qq.com 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022-07-20 10:14:25
下一篇 2022-07-20 10:14:38

软件定制开发公司

相关阅读

发表回复

登录后才能评论
通知:禁止投稿所有关于虚拟货币,币圈类相关文章,发现立即永久封锁账户ID!