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大量写入问题优化详解

    MYSQL大量写入问题优化详解

    这篇文章主要介绍了MYSQL大量写入问题优化详解,文中优化点解释的很清楚,让人看完就明了,感兴趣的同学可以阅读理解下
    2021-03-03
  • MySQL的id关联和索引使用的实际优化案例

    MySQL的id关联和索引使用的实际优化案例

    这篇文章主要介绍了MySQL的id关联实际优化案例,关联和索引一直是MySQL常见的可优化大块儿,需要的朋友可以参考下
    2015-05-05
  • Mysql中如何查看执行计划

    Mysql中如何查看执行计划

    这篇文章主要介绍了Mysql中如何查看执行计划,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • mysql-5.5.28源码安装过程中错误总结

    mysql-5.5.28源码安装过程中错误总结

    介绍一下关于mysql-5.5.28源码安装过程中几大错误总结,希望此文章对各位同学有所帮助。
    2013-10-10
  • mysql数据库提权的三种方法

    mysql数据库提权的三种方法

    文介绍了MySQL数据库的三种提权方法:UDF提权、MOF提权和启动项提权,同时列出了一些常见数据库及其默认端口,下面就来介绍一下,感兴趣的可以了解一下
    2024-09-09
  • MySQL的Grant命令详解

    MySQL的Grant命令详解

    mysql中可以通过Grant命令为数据库赋予用户权限,这里简单介绍下Grant的使用方法,需要的朋友可以参考下
    2013-10-10
  • 微信公众平台开发 数据库操作

    微信公众平台开发 数据库操作

    这篇文章主要介绍了微信公众平台开发 数据库操作的相关资料,需要的朋友可以参考下
    2016-10-10
  • 关于MySQL分区表的一个性能BUG

    关于MySQL分区表的一个性能BUG

    这篇文章主要给大家讲诉MySQL分区表的一个性能BUG,也就是使用分区表进行数据查询/加载的时候比普通表的性能下降了约50%,下面就来讲将对此的解决办法,需要的朋友可以参考以下内容
    2021-09-09
  • mysql中的事务全方位解析

    mysql中的事务全方位解析

    这篇文章主要介绍了mysql中的事务全方位解析,事务是一种机制、一个操作序列,包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求,需要的朋友可以参考下
    2023-08-08
  • 解决Navicat导入数据库数据结构sql报错datetime(0)的问题

    解决Navicat导入数据库数据结构sql报错datetime(0)的问题

    这篇文章主要介绍了解决Navicat导入数据库数据结构sql报错datetime(0)的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07

最新评论