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

 更新时间:2021年12月02日 16:57:27   作者:十有八⑨  
大家好,本篇文章主要讲的是mysql创建存储过程及函数详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览

1. 存储过程

1.1. 基本语法

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 创建一个指定执行权限的存储过程

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

UNSIGNED [characteristics] routine_body

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

1.3 DELIMITER 的使用

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

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

DELIMITER //
CREATE definer=`root`@`%` PROCEDURE `avgFruitPrice`(
in f_string VARCHAR(200)
)
BEGIN
    select length(f_string);
END//

2. 创建函数 

函数的创建与存储过程相同

示例

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

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存储过程及函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL RC事务隔离的实现原理

    MySQL RC事务隔离的实现原理

    这篇文章主要介绍了MySQL RC事务隔离的实现,Read Committed,事务运行期间,只要别的事务修改数据并提交,即可读到人家修改的数据,所以会有不可重复读、幻读问题,下文相关介绍需要的朋友可以参考下
    2022-03-03
  • MySQL乐观锁和悲观锁具体实现

    MySQL乐观锁和悲观锁具体实现

    这篇文章主要介绍了MySQL乐观锁和悲观锁具体实现,文章围绕主题展开详细的内容戒杀,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • mysql 体系结构和存储引擎介绍

    mysql 体系结构和存储引擎介绍

    这篇文章主要介绍了mysql 体系结构和存储引擎,通过mysql数据库常见的数据库引擎展开各个引擎之间的特性和区别。下文更多相关资料介绍感兴趣的小伙伴可以参考一下
    2022-05-05
  • mysql between实现选取介于两个值之间的数据范围

    mysql between实现选取介于两个值之间的数据范围

    这篇文章主要介绍了mysql between实现选取介于两个值之间的数据范围,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • MySQL查询中LIMIT的大offset导致性能低下浅析

    MySQL查询中LIMIT的大offset导致性能低下浅析

    这篇文章主要给大家介绍了关于MySQL查询中LIMIT的大offset导致性能低下的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • 在MySQL数据库中使用C执行SQL语句的方法

    在MySQL数据库中使用C执行SQL语句的方法

    与PostgreSQL相似,可使用许多不同的语言来访问MySQL,包括C、C++、Java和Perl。从Professional Linux Programming中第5章有关MySQL的下列章节中,Neil Matthew和Richard Stones使用详尽的MySQL C接口向我们介绍了如何在MySQL数据库中执行SQL语句。
    2012-10-10
  • mysql中使用sphinx搜索子域名需注意的问题

    mysql中使用sphinx搜索子域名需注意的问题

    比如搜索jb51.net会把www.jb51.net、jb51.net、sc.jb51.net等都搜索出来
    2013-02-02
  • VMWare linux mysql 5.7.13安装配置教程

    VMWare linux mysql 5.7.13安装配置教程

    这篇文章主要为大家详细介绍了VMWare linux mysql 5.7.13安装配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • Linux利用UDF库实现Mysql提权

    Linux利用UDF库实现Mysql提权

    根据MySQL函数族的可扩展机制,意味着用户可以自己建立包含有自定义函数的动态库来创建自定义函数,简称udf
    2014-07-07
  • mysql忘记密码怎么办

    mysql忘记密码怎么办

    mysql忘记密码怎么办?这篇文章主要为大家详细介绍了MySQL忘记密码的解决办法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06

最新评论