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

吾爱主题 阅读:143 2024-04-02 18:53:12 评论:0
目录
  • 1. 存储过程
    • 1.1. 基本语法
    • 1.2 创建一个指定执行权限的存储过程
    • 1.3 DELIMITER 的使用
  • 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.3 DELIMITER 的使用

      ”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查询结果为其参数复制: 其语句为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

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容