语法:

创建存储过程:

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语句/自定义变量等等内容,详情参阅

调用存储过程:

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

CALL sp_name

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

存储过程修改:

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

删除存储过程:

DROP PROCEDURE [IF EXISTS] sp_name

示例:

创建无参存储过程:

delimiter //

CREATE PROCEDUREshowTime()BEGIN

SELECTnow();END//delimiter ;

CALL showTime;

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

创建含参存储过程:

只有一个IN参数

delimiter //

CREATE PROCEDURE seleById(IN uid SMALLINTUNSIGNED)BEGIN

SELECT * FROM son WHERE id =uid;END//delimiter ;

call seleById(2);

包含IN参数和OUT参数

delimiter //

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

DELETE FROM son WHERE id =uid;

SELETE row_count()intonum;END//delimiter ;

call seleById(2,@changeLine);

SELETE@changeLine;

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

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

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

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

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

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

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

提高了运行速度;

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

mysql存储过程和自定义函数_MySQL存储过程/存储过程与自定义函数的区别相关推荐

  1. mysql exec函数_mysql exec 存储过程

    MySql存储过程 create proc 名称 参数列表 as 代码段 exec 存储过程名称 参数列表 要点: 1.可以使用output修饰参数 2.可以使用默认值,注意需要将最后的参数设置成默认 ...

  2. mysql 导出函数_mysql导出存储过程或函数

    查询数据库中的存储过程和函数 方法一: select `name` from mysql.proc where db = 'your_db_name' and `type` = 'PROCEDURE' ...

  3. mysql 过程和函数_MySQL:存储过程和函数

    变量 系统变量 变量由系统提供,不是用户自定义的,属于服务器层面 全局变量 会话变量 # 如果是全局级别,则需要加global,如果是会话级别,则需要加session,如果不写,则默认是会话 # 查看 ...

  4. mysql 按月建表_MySQL之存储过程按月创建表

    具体不多说,直接上代码.欢迎一起交流和学习. 创建一个按月创建表的存储过程,SQL语句如下: DELIMITER // DROP PROCEDURE IF EXISTS create_table_by ...

  5. mysql定义条件和处理_mysql sql存储过程条件定义与处理

    一.条件定义 DECLARE condition_name CONDITION FOR condition_vale condition_value: sqlstate[value] sqldata_ ...

  6. mysql存储过程没有此表_mysql用存储过程写入 一个表A中没有存在在另一个表B的数据...

    需求 Abiao id content 1 sfsdfsg 2 ddsgffd 3 gfggg 4 dggfhfd Bbiao id 2 3 那么我要查询到Abiao 里面在Bbiao没有的数据 (理 ...

  7. mysql存储过程中删除定时器_mysql创建存储过程,定时任务,定时删除log 莫大人...

    -- 创建存储过程 清除30天前的日志 create procedure deleteLog() BEGIN delete from contract_vlog where create_time e ...

  8. mysql怎样循环执行存储_mysql 循环存储过程

    create procedure cunchu1(a int) begin DECLARE count int default 0; -- 定义变量 DECLARE i int default 1; ...

  9. mysql命令查看过程内容_mysql查看存储过程命令

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  10. mysql调用存储过程耗费时间吗_mysql调用存储过程耗费时间吗

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

最新文章

  1. 『干货』分享你最喜欢的技巧和提示(Xcode,objective-c,swift,c...等等)
  2. 在linux上安装docker
  3. 最小二乘法原理及极值点判定
  4. docker 开启命令\退出容器
  5. 计算机和互联网基础知识作业,计算机作业1基础知识含答案.doc
  6. php访问网页post获取源码,第一次抓别人网站数据,用postman直接请求可以获取到返回数据,通过代码的方式就一直报错,php...
  7. 用python写helloworld_Python基于Tkinter的HelloWorld入门实例
  8. day1 java基础回顾-多线程
  9. javascript -- 变量
  10. mysql 个版本区别_MySQL各个版本区别
  11. 如何解决计算机前置音频设备无声音输出的方法之一
  12. VS2010开发web项目打开后,项目不可用,提示“需要缺少的 Web 组件才能进行加载”
  13. 让刷Q币者对爱机你无从下手
  14. 概率复习 第一章 基本概念
  15. 【行业案例】域乎科技:“数”写长三角一体化的加速度——域乎科技链接未来,做数字时代的奠基人(智慧上海2020总第24篇)
  16. 三废的日常——什么是负载均衡
  17. 基于elementUI封装了基础表单组件
  18. @RequestBody接受单个long参数
  19. 深入理解计算机系统-第七章(链接)笔记
  20. android4.4.2小游戏,安卓模拟器4.4.2内核之上的穹顶之战 夜神1.1.3版本到来

热门文章

  1. Mac终端:pip command not found
  2. 【Kafka】Kafka inter.broker.listener.name must be a listener name defined in advertised.listeners
  3. java.lang.Runtime.availableProcessors返回可用处理器的Java虚拟机的数量
  4. 09-Elasticsearch重要的系统配置
  5. android Mediaplayer各种属性和方法简单介绍
  6. 如何解读Nginx源码
  7. Kafka中@KafkaListener如何动态指定多个topic
  8. Oracle数据字典中查看约束信息/约束相关笔记
  9. java基础面试题之:switch的参数类型
  10. JSON有关的一道题