当前位置: 首页 > news >正文

MySQL存储过程

存储过程 

1、存储过程简介
存储过程与函数的直接效果类似,只不过存储过程,封装的是一组sql语句。

mysql数据库存储过程是一组为了完成特定功能的sql语句的集合。
存储过程这个功能时从5.0版本才开始支持的,它可以加快数据库的处理速度,增强数据库在实际应用中的灵活性。
存储过程在使用过程中是将常用或复杂的工作预先使用sql语句写好,并用一个指定的名称存储起来,这个过程编译和优化后存储在数据库服务器中,当需要使用该存储过程时,只需要调用它即可。
操作数据库的传统sql语句在执行时,需要先编译,然后再去执行,跟存储过程一对比,明显存储过程在执行速度更快,效率更高。存储过程在数据库中创建并保存。它不仅仅是sql了语句的集合,还可以加入一些特殊的控制结构,也可以控制数据的访问方式。

2、存储过程的优点
执行一次后,会将生成的二进制代码驻留缓冲区,提高执行效率
sql语句加上控制语句的集合,灵活性高
在服务器端存储,客户端调用时,降低网络负载
可多次重复被调用,可随时修改,不影响客户端调用。
可完成所有的数据库操作,也可控制数据库的信息访问权限

3、语法
create procedure  <过程名> ([过程参数....]) <过程体>
[过程参数....] 格式
<过程名>:尽量避免与内置的函数或字段重名
<过程体>:语句
[in|out|inout] <参数名><类型>

4、不带参数的存储过程创建
mysql> delimiter @@    ##将语句的结束符号从分号临时修改为@@,以防出问题,可以自定义
mysql> create procedure  proc()  #创建存储过程,过程名自定义,()可带参数 
    -> begin              #过程体以关键字begin开始
    -> select * from info;    #过程体语句(可有多条)
    -> end @@             #过程体以关键字end结尾
 
mysql> delimiter ;        #将语句的结束符号恢复为分号
 mysql> show create procedure proc\G
#查看存储过程信息
 mysql> call proc();   #调用存储过程

5、带参数的存储过程创建
in输入参数: in 表示调用者向过程传入值(传入值可以是字面量或变量)

out输出参数: out表示过程向调用者传出值(可以返回多个值)(传出值只能是变量)

inout输入/输出参数: inout,即表示调用者向过程传入值,又表示过程向调用者传入值(只能是变量)

mysql> delimiter @@
mysql> create procedure proc01 (in inname varchar(40))     #行参
    -> begin
    -> select * from info where name=inname;
    -> end @@
mysql> delimiter ;            
mysql> call proc01('wangwu');              #实参


6、删除存储过程
drop procedure if exists proc;
#删除proc存储过程

三、总结
存储过程是将一些sql语句存储在集合里面,当需要执行这些语句的时候,就可进行call调用这个存储过程,整体逻辑跟shell中函数一致。

主要可避免提高执行sql语句的效率、提高灵活率。
 

相关文章:

MySQL存储过程

存储过程 1、存储过程简介 存储过程与函数的直接效果类似&#xff0c;只不过存储过程&#xff0c;封装的是一组sql语句。 mysql数据库存储过程是一组为了完成特定功能的sql语句的集合。 存储过程这个功能时从5.0版本才开始支持的&#xff0c;它可以加快数据库的处理速度&…...

element-ui 自定义loading加载样式

element-ui 中的 loading 加载功能&#xff0c;默认是全屏加载效果&#xff0c; 设置局部&#xff0c;需要自定义样式&#xff0c;自定义的方法如下&#xff1a; import { Loading } from element-uiVue.prototype.$baseLoading (text) > {let loadingloading Loading.s…...

04-Apache Directory Studio下载安装(LDAP连接工具)

1、下载 官网下载Apache Directory Studio 注意Apache Directory Studio依赖于jdk&#xff0c;对jdk有环境要求 请下载适配本机的jdk版本的Apache Directory Studio,下图为最新版下载地址 Apache Directory Studio Version 2.0.0-M16 基于 Eclipse 2020-12&#xff0c;最低要…...

vmware虚拟机(ubuntu)远程开发golang、python环境安装

目录 1. 下载vmware2. 下载ubuntu镜像3. 安装4. 做一些设置4.1 分辨率设置4.2 语言下载4.3 输入法设置4.4 时区设置 5. 直接切换管理员权限6. 网络6.1 看ip6.2 ssh 7. 本地编译器连接远程服务器7.1 创建远程部署的配置7.2 文件同步7.3 远程启动项目 8. ubuntu安装golang环境8.1…...

Elasticsearch文档多个输入字段组成ID实现方法

1、场景描述&#xff1a; 使用Elasticsearch时&#xff0c;有时会需要指定文档id的场景&#xff0c;当文档id需要多个字段组成时&#xff0c;这种业务怎么处理呢&#xff1f; 2、问题描述&#xff1a; 现有一个ElasticSearch文档&#xff0c;假设文档id由userid、 eventTime…...

编译链接实战(15)rdynamic选项的用途

文章目录 rdynamic作用栈回溯 rdynamic作用 看下gcc man手册的解释&#xff1a; Pass the flag -export-dynamic to the ELF linker, on targets that support it. This instructs the linker to add all symbols, not onlyused ones, to the dynamic symbol table. This opti…...

前端:js实现提示框(自动消失)

效果&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&q…...

powerpc架构的前世今生

文章目录 Powerpc架构的前世今生什么是powerpc&#xff1f;PowerPC和ARM有什么区别呢&#xff1f; Powerpc架构的前世 PowerPC架构是一种基于精简指令集计算机&#xff08;RISC&#xff09;的处理器架构。它最初由IBM、Motorola和Apple共同开发&#xff0c;旨在为个人电脑、工…...

SQL-存储过程、流程控制、游标

存储过程 存储过程概述 1.产生背景 开发过程总&#xff0c;经常会遇到重复使用某一功能的情况 2.解决办法 MySQL引人了存储过程(Stored Procedure)这一技术 3.存储过程 存储过程就是一条或多条SQL语句的集合存储过程可将一系列复杂操作封装成一个代码块&#xff0c;以便…...

JavaScript的数组和字典的用法

JavaScript 中的数组是一种用于存储多个值的数据结构&#xff0c;它可以容纳不同类型的数据&#xff08;例如数字、字符串、对象等&#xff09;。以下是 JavaScript 数组的常见用法&#xff1a; 创建数组 // 创建一个空数组 let emptyArray [];// 创建一个包含元素的数组 le…...

中断和异常

1.什么是中断 CPU上会运行两种程序&#xff0c;一种是内核程序&#xff0c;一种是应用程序。在正常的情况&#xff0c;CPU上面会主动运行应用程序&#xff0c;中断就是操作系统内核夺回CPU执行权的唯一途径&#xff0c;也就是用户态——>内核态。 2.内中断和外中断 2.1内…...

【python】实现积分

借助sympy.integrate() 符号运算库&#xff0c;所以里面的exp()&#xff0c;sin()等都要使用sympy库中的函数&#xff0c;如果使用numpy库中的函数时没用的。 import sympy as sp import numpy as np x sp.symbols("x") print(sp.integrate(sp.exp(-x**2), (x, -s…...

微信仿H5支付

仿H5支付是指一种模拟原生H5支付流程的非官方支付方式。这种支付方式通常是由第三方支付服务提供商开发和维护的&#xff0c;目的是为了绕过官方支付渠道的限制&#xff0c;如费率、审核等问题。然而&#xff0c;由于仿H5支付并非官方授权和认可的支付方式&#xff0c;其安全性…...

数据结构——栈

栈 栈的理解 咱们先不管栈的数据结构什么&#xff0c;先了解栈是什么&#xff0c;栈就像一个桶一样&#xff0c;你先放进去的东西&#xff0c;被后放进的的东西压着&#xff0c;那么就需要把后放进行的东西拿出才能拿出来先放进去的东西&#xff0c;如图1&#xff0c;就像图1中…...

组件化开发之如何封装组件-react

组件化开发之如何封装组件-react 什么是组件为什么需要封装组件组件的分类函数组件&#xff08;Functional Components&#xff09;&#xff1a;展示型组件&#xff1a;容器型组件&#xff1a;知道组件分类的意义是&#xff1f; 如何拆分组件&#xff0c;需要遵循什么原则1.保证…...

大数据HBase学习圣经:一本书实现HBase学习自由

学习目标&#xff1a;三栖合一架构师 本文是《大数据HBase学习圣经》 V1版本&#xff0c;是 《尼恩 大数据 面试宝典》姊妹篇。 这里特别说明一下&#xff1a;《尼恩 大数据 面试宝典》5个专题 PDF 自首次发布以来&#xff0c; 已经汇集了 好几百题&#xff0c;大量的大厂面试…...

Leetcode110. 平衡二叉树

力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a; 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 题解&#xff…...

Swift的NSClassFromString转换

在swift 中使用NSClassFromString 从string 转换到 对象&#xff0c;报了Segmentation fault: 11 错误。 let ctrlClass: AnyClass NSClassFromString("HomeViewController")! let ctrl: UIViewController ctrlClass.init() as UIViewController 正确的写法&…...

linux上vim编辑器设置

linux上vim编辑器设置 减少tab缩进、显示行号等 在vimrc&#xff08;一般在/etc/vim/vimrc中&#xff09;末尾添加 set helplangcn "中文帮助文档(前提是下了中文包) syntax enable syntax on " 自动语法高亮 set number"显示行号 colorscheme desert" 设…...

SpringCloudAlibaba OpenFeign整合及详解

SpringCloudAlibaba OpenFeign 在前面&#xff0c;我们使用Nacos服务注册发现后&#xff0c;服务远程调用可以使用RestTemplateRibbon或者OpenFeign调用。实际开发中很少使用RestTemplate这种方式进行调用服务&#xff0c;每次调用需要填写地址&#xff0c;还要配置各种的参数&…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言&#xff1a; 双亲委派机制对于面试这块来说非常重要&#xff0c;在实际开发中也是经常遇见需要打破双亲委派的需求&#xff0c;今天我们一起来探索一下什么是双亲委派机制&#xff0c;在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言&#xff1a; 类加载器 1. …...