转自:http://www.cnblogs.com/caoruiy/p/4486249.html

语法:

创建存储过程:

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自定义函数用法详解-复合结构自定义变量/流程控制

调用存储过程:

CALLsp_name ([ proc_parameter [,proc_parameter ...]])

CALL sp_name

说明:当无参时,可以省略"()",当有参数时,不可省略"()"

存储过程修改:

ALTER语句修改存储过程只能修改存储过程的注释等无关紧要的东西,不能修改存储过程体,所以要修改存储过程,方法就是删除重建!

删除存储过程:

DROP PROCEDURE [IF EXISTS] sp_name

示例:

创建无参存储过程:

delimiter //

CREATE PROCEDURE showTime()

BEGIN

SELECT now();

END//

delimiter ;

CALL showTime;

作用:显示当前时间,没什么实际意义

创建含参存储过程:

只有一个IN参数

delimiter //

CREATE PROCEDURE seleById(IN uid SMALLINT UNSIGNED)

BEGIN

SELECT * FROM son WHERE id = uid;

END//

delimiter ;

call seleById(2);

包含IN参数和OUT参数

delimiter //

CREATE PROCEDURE deleteById(IN uid SMALLINT UNSIGNED, OUT num SMALLINT UNSIGNED)

BEGIN

DELETE FROM son WHERE id = uid;

SELETE row_count() into num;

END//

delimiter ;

call seleById(2,@changeLine);

SELETE @changeLine;

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

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

存储过程实现的过程要复杂一些,而函数的针对性较强;

存储过程可以有多个返回值,而自定义函数只有一个返回值;

存储过程一般独立的来执行,而函数往往是作为其他SQL语句的一部分来使用;

存储过程存在的必要性(好处):

存储过程说白了就是把经常使用的SQL语句或业务逻辑封装起来,预编译保存在数据库中,当需要的时候从数据库中直接调用,省去了编译的过程.

提高了运行速度;

同时降低网络数据传输量(你觉得传一堆SQL代码快,还是传一个存储过程名字和几个参数快???)

mysql存储过程自定义结构体_(转)MySQL存储过程/存储过程与自定义函数的区别...相关推荐

  1. Gin 框架学习笔记(01)— 自定义结构体绑定表单、绑定URI、自定义log、自定义中间件、路由组、解析查询字符串、上传文件、使用HTTP方法

    要实现一个 API 服务器,首先要考虑两个方面:API 风格和媒体类型.Go 语言中常用的 API 风格是 RPC 和 REST,常用的媒体类型是 JSON.XML 和 Protobuf.在 Go A ...

  2. 【Qt】信号和槽传递自定义结构体

    一.使用信号和槽传递自定义结构体 这是一个老问题了,但是每次使用都要bing,因此做个笔记整理下. 一共有三种方法,可以让结构体在信号和槽之间传递.前两种方法可以让结构体在线程之间传递,最后一种方法只 ...

  3. C++对自定义结构体变量排序

    在C++中,如果容器中的数据类型为int double等基本类型时,我们很容易利用STL自带的函数对其进行排序,但是如果数据类型是我们自定义的结构体或者类呢,这时候再利用STL进行排序就力不从心了.在 ...

  4. Qt中的QByteArray和自定义结构体之间的相互转换

    在Qt项目开发中,经常会碰到自定义结构体和字符数组之间的转换问题,不妨假设结构体名字为custom_struct, 字符数组名字为array_data 1. QByteArray转换为自定义结构体 c ...

  5. Linux内核dev_set_drvdata()和dev_get_drvdata()存储自定义结构体用法

    定义位置:kernel/msm-3.18/include/linux/device.h static inline void dev_set_drvdata(struct device *dev, v ...

  6. QML < 5 > QML 访问C++ 类 (函数Q_INVOKABLE、枚举Q_ENUMS 、成员变量Q_PROPERTY、自定义结构体QVariantMap、List数据QVariantL

    QML < 5 > QML 访问C++ 类 (函数Q_INVOKABLE.枚举Q_ENUMS .成员变量Q_PROPERTY.自定义结构体(QVariantMap ).List数据QVar ...

  7. STL 的 std::set 创建自定义结构体的对象,定义严格弱序的比较函数

    文章目录 正文 Ref 系列地址 简 述: 对于 STL 中 std::set 创建自定义结构体的对象,发现使用 "函数对象" 和 "定义普通函数 + decltype& ...

  8. c语言调用dll实例 结构体传参,Matlab调用Dll,对于自定义结构体数组如何传参? - 程序语言 - 小木虫 - 学术 科研 互动社区...

    %[例子1] % Matlab调用DLL,整形数组传参 v = [1,22,33;44,-56,67]; pv = libpointer('int16Ptr',v); m = get(pv,'Valu ...

  9. Qt中解决信号和槽不能使用自定义结构体的问题

    在Qt中信号和槽使用自定义的结构时,运行的时候发现报错不能识别结构体 解决办法: 一定要将自定义结构体定义为typedef struct 使用Q_DECLARE_METATYPE(结构体名),将结构体 ...

最新文章

  1. iOS显示gif图片的几种方法
  2. Uncaught TypeError: Cannot read property 'setAttribute' of null
  3. 非计算机专业学习计算机
  4. python3 xml 取标签显示内容_如何应用“XML+XSLT”技术分离Web表示层数据和样式
  5. flex 3与flex 4的不同
  6. koa2-cookie-session
  7. 知识图谱论文阅读(二十)【WWW2020】Heterogeneous Graph Transformer
  8. Java ADF Template程序不能连接ArcGIS Server问题
  9. php编写数据库配置文件,通用php与mysql数据库配置文件
  10. python正则表达式练习题
  11. 使用jQuery的load方法实现div局部刷新
  12. Ajax案例:简易的购书网页
  13. lora 调制解调器计算器_如何将Android手机用作调制解调器; 无需生根
  14. python爬取数据+数据分析
  15. 物联网卡是做什么用的
  16. 米家扫地机器人充满电需要多长时间_【米家扫地机器人使用总结】充电|APP|清扫_摘要频道_什么值得买...
  17. POJ 小白算法学习 任重而道远
  18. 网易云/QQ音乐导入Apple Music
  19. 毕业设计论文 基于遥感影像的道路材质信息提取方法研究
  20. matlab实现通信系统,香农定理的介绍

热门文章

  1. 【华为云技术分享】处理器存储模型概述(1)
  2. 【华为云技术分享】【DevCloud•敏捷智库】读懂敏捷需求管理的4个关键词
  3. 【华为云技术分享】CentOS7.4系统下,手动安装MySQL5.7的方法
  4. 区块链学习笔记:D04 区块链在各行业领域的应用(二)
  5. 学习索引结构的一些案例——Jeff Dean在SystemML会议上发布的论文(中)
  6. Android 短信数据库重要table字段解释
  7. c++语言中的循环语句有,C++语言中的循环语句
  8. 捋一捋20201217
  9. 使用vscode连接阿里云服务器报错: ssh: Could not resolve hostname Name or service not known
  10. android studio 横幅,有关 android studio notification 横幅弹出的功能没有反应