游客您好
第三方账号登陆
  • 点击联系客服

    在线时间:8:00-16:00

    客服电话

    17712677918

    电子邮件

    857020071@qq.com
  • 扫描二维码

    关注微信公众号

推荐阅读
sxadmin 管理员
江苏省苏州市 | 互联网
  • 关注0
  • 粉丝0
  • 帖子175
热议话题
Node.js 简介
2021-08-28 0
Node.js 是一个开源与跨平台的 JavaScript 运行时环境。 它是一个可用于几乎任何项目
精选帖子

MySQL存储过程/存储过程与自定义函数的区别

[复制链接]
sxadmin 发表于 2021-10-25 10:28:40 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
语法:
创建存储过程:
CREATE [definer = {user|current_user}] PROCEDURE sp_name ([ proc_parameter [,proc_parameter ...]]) [ characteristics..] routime_body
其中:
proc_parameter : [IN|OUT|INOUT] parameter_name type
其中IN表示输入参数,OUT表示输出参数,INOUT表示既可以输入也可以输出;param_name表示参数名称;type表示参数的类型
存储过程体中可以使用自定义函数(UDF)中使用的复合结构/流程控制/SQL语句/自定义变量等等内容,详情参阅 MySQL自定义函数用法详解-复合结构自定义变量/流程控制
调用存储过程:
CALL sp_name ([ proc_parameter [,proc_parameter ...]])
CALL sp_name
说明:当无参时,可以省略"()",当有参数时,不可省略"()"
存储过程修改:
ALTER语句修改存储过程只能修改存储过程的注释等无关紧要的东西,不能修改存储过程体,所以要修改存储过程,方法就是删除重建!
删除存储过程:
DROP PROCEDURE [IF EXISTS] sp_name
示例:
创建无参存储过程:
[url=][/url]
delimiter //CREATE PROCEDURE showTime()BEGINSELECT now();END//delimiter ;CALL showTime;[url=][/url]

作用:显示当前时间,没什么实际意义
创建含参存储过程:
只有一个IN参数
[url=][/url]
delimiter //CREATE PROCEDURE seleById(IN uid SMALLINT UNSIGNED)BEGINSELECT * FROM son WHERE id = uid;END//delimiter ;call seleById(2);[url=][/url]

包含IN参数和OUT参数
[url=][/url]
delimiter //CREATE PROCEDURE deleteById(IN uid SMALLINT UNSIGNED, OUT num SMALLINT UNSIGNED)BEGINDELETE FROM son WHERE id = uid;SELETE row_count() into num;END//delimiter ;call seleById(2,@changeLine);SELETE @changeLine;[url=][/url]

说明:创建存储过程deleteById,包含一个IN参数和一个OUT参数.调用时,传入删除的ID和保存被修改的行数值的用户变量@changeLine,select @changeLine;输出被影响行数.

[url=][/url]
存储过程与自定义函数的区别:存储过程实现的过程要复杂一些,而函数的针对性较强;存储过程可以有多个返回值,而自定义函数只有一个返回值;存储过程一般独立的来执行,而函数往往是作为其他SQL语句的一部分来使用;[url=][/url]

[url=][/url]
存储过程存在的必要性(好处):

存储过程说白了就是把经常使用的SQL语句或业务逻辑封装起来,预编译保存在数据库中,当需要的时候从数据库中直接调用,省去了编译的过程.
提高了运行速度;
同时降低网络数据传输量(你觉得传一堆SQL代码快,还是传一个存储过程名字和几个参数快???)






上一篇:MySQL自定义函数用法详解-复合结构自定义变量/流程控制
下一篇:ios端与js交互(WebView+WKWebView)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

icitu.com 信息谷-icit软硬件产品营销与行业智慧化解决方案实施供需对接空间,信息人家园-信息人之间互助互惠互利的资源整合空间,icit人团结起来帮助人们沟通与建设,icit unite to help people communicating&constructing。
0512-68181818
关注我们
  • 访问移动手机版
  • 官方微信公众号

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc. 优康设计 ( 苏ICP备10066271号-2 )|网站地图