首页 / MYSQL / mysql存储过程和函数(一)
mysql存储过程和函数(一)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql存储过程和函数(一),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1671字,纯文字阅读大概需要3分钟。
内容图文
![mysql存储过程和函数(一)](/upload/InfoBanner/zyjiaocheng/1119/483033b39dda49dd93609023a3e906d1.jpg)
存储过程和函数是事先经过编译并存储在数据库的一段sql语句集合,调用存储过程和函数可以简化应用程序开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对提高数据运行效率是有好处的。
存储过程和函数的区别在于函数必须有返回值,而存储过程却没有,存储过程的参数可以使用IN,OUT,INOUT类型,而函数的参数只能使用IN类型,
在对存储过程或者函数进行操作时,需要先判断用户是否有相应的权限,例如,创建存储过程或者函数需要 CREATE ROUTINE 权限,修改或者删除存储过程或者函数需要 ALTER ROUTINE 权限,执行存储过程或者函数则需要EXECUTE权限。
创建 存储过程语法:
CREATE PROCEDURE findUser (IN p_u_id INT) BEGIN SELECT id,username,phone FROM mmall_user WHERE id = p_u_id; END;
调用存储过程的语法:
CALL findUser (23) ;
在执行存储存储过程或者函数之前,可以通过“DELIMITER $$” 命令将语句的结束符从“;”修改成其他符号 , 这里是用的是$$ ,这样在过程或者函数中的;就不会被mysql解释成语句的结束而提示错误,在存储过程或者函数结束后,要通过“DELIMITER ;” 命令再将结束符该回成“;”
在数据库调用存储过程和直接执行sql的结果是相同的,但是存储过程的好处在于处理逻辑都封装在数据库端,调用者不需要了解中间的处理逻辑,一旦处理逻辑发生变化,只需要修改存储过程就可以。而对调用者的程序完全没有影响。
删除存储过程或者函数:
一次只可以删除一个存储过程或者函数,删除存储过程或者函数需要有该过程或者函数的“ALTER ROUTINE”权限。
DROP {PROCEDURE/FUNCTION} IF EXISTS findUser; #判断是否存在同名的存储过程,删除
查看存储过程或者权限:
1.查看存储过程或者函数的状态
SHOW {PROCEDURE/FUNCTION} STATUS [LIKE ‘pattern‘]
2.查看存储过程或者函数的定义
SHOW CREATE {PROCEDURE/FUNCTION} sp_name
3.通过查看 information_schema.Routines 了解存储过程和函数的信息
SELECT * FROM information_schema.Routines WHERE ROUTINE_NAME = sp_name;
变量的使用:
1.变量的定义:通过DECLARE可以定义一个局部变量,该变量的作用范围只能在BEGIN...END块中,可以用在嵌套的块中。变量的定义必须写在复合语句定义的开头,并且在任何其他语句的前面,可以一次声明多个同类型的变量。如果需要,可以使用DEFAULT赋默认值。
定义变量的语法:
DECLARE var_name [...] type [DEFAULT value]
例:
CREATE FUNCTION get_username(productId int ,p_create_time DATETIME) RETURNS DECIMAL(10,2) DETERMINISTIC READS SQL DATA BEGIN DECLARE varPay DECIMAL(10,2) ; select IFNULL(sum(price),0) INTO varPay from mmall_product where create_time<=p_create_time and id = productId; RETURN varPay; END;
查看所有变量:
show session variables;
原文:https://www.cnblogs.com/EveningWind/p/9949968.html
内容总结
以上是互联网集市为您收集整理的mysql存储过程和函数(一)全部内容,希望文章能够帮你解决mysql存储过程和函数(一)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。