Mysql_sql存储过程

Java+SQL+MySQL+Hive存储过程汇总 Java+SQL+MySQL+Hive存储过程汇总 存储过程概念 ​ 在我们做一个复杂的项目时,会多次涉及到与数据库的连接,这时我们会一次次的来用SQL语句进行对数据库的连接,但如果我们这时用存储过程的话就只需要连接一次数据库就可以了,从而省去大量的SQL语句。 存储过程的优点 1、加快运行速度 ​ 对于很简单的sql,存储过程没有什么优势。对于复杂的业务逻辑,因为在存储过程创建的时候,数据库已经对齐进行了一次解析和优化。存储过程一旦执行,在内存中就会保留一份这个存储过程,这样下次再执行同样的存储过程时,可 阅读详情

#存储过程

    存储过程和函数:类似于java中的方法

    好处:

        1.提高代码的重用性

        2.简化操作

        #存储过程  procedure

            含义:一组预先编译好的SQL语句的集合,理解成批处理语句

            1.提高代码的重用性

            2.简化操作

            3.减少了编译次数并且减少了和数据服务器的连接次数,提高了效率

 

 #一、创建语法 begin end类型于{}

            CREATE PROCEDURE 存储过程名(参数列表)

            BEGIN

                存储过程体(一组合法的SQL语句)

            END

        注意:

         1.参数列表包含三部分

            参数模式 参数名 参数类型

            举例:

                IN stuname VARCHAR(20)

         参数类型:

             IN :该参数可以作为输入,也就是该参数需要调用方传入值

             OUT :该参数可以作为输出,也就是该参数可以作为返回值

             INOUT :该参数可以作为输入又可以作为输出,也就是参数既需要传入值,又可以返回值

        2.如果存储过程体仅仅只有一句话,begin end可以省略

            存储过程中的每条SQL语句的结尾必须加分号。

            存储过程的结尾可以使用 DELIMITER 重新设置 delimter $结束标记 再遇到$符号就执行

            语法:

                DELIMITER 结束标记

            案例: #

                DELIMITER $

 

#二、调用语法

            CALL 存储过程名(实参列表);

 

存储过程案例

    #1、空参列表

        #案例:插入到admin表中五条记录

        SELECT * FROM admin;

#delimter $ 声明这个$符号遇到 end$时 当遇到这个符号再执行整段语句 

  因为储存过程中的sql语句结尾分号 如果不加标记编译器认为到分号就结束了

 

        DELIMITER $    

        CREATE PROCEDURE myp1()

        BEGIN

            INSERT INTO admin(username,`password`)

            VALUE('tom',777),('lily',577),('luce',767),('jack',797),('sim',377);

        END $

复制到mysql自带客户端

        

 

 #调用存储结构 call

            CALL myp1()$  成功的的插入五条数据

前面声明了遇到$符号才执行 我在select查询时 用分号无效用$符回车才执行select语句

        

 

#2、创建带in模式参数的存储过程

      #案例1.创建存储过程实现 根据女神名,查询对应的男神名

        这里的女神名需要当作参数

        CREATE PROCEDURE myp2(IN beautyName VARCHAR(20))

        BEGIN

                SELECT bo.*

                FROM boys bo

                RIGHT JOIN beauty gr ON gr.`boyfriend_id`=bo.`id`

                WHERE gr.name=beautyName;

        END $

      

 

    #调用

    CALL myp2('小昭')$  传入形参

    

 

    #案例2.创建存储过程实现,用户是否登录成功

        CREATE PROCEDURE myp3(IN username VARCHAR(20),IN `password` VARCHAR(20))

        BEGIN

            DECLARE result INT DEFAULT 0;#声明局部变量并赋值

    

            SELECT COUNT(*) INTO result #满足用户名密码与数据库中数据一致时 筛选条件满足count加1 赋值给result变量

            FROM admin a

            WHERE a.username=username

            AND a.password=`password`;

    

            SELECT IF(result>0,'成功','失败');  #查看局部变量 如果result>0则where筛选条件成功 count加1

        END $

        

传入的值满足筛选条件传入name与password与 admin表中一致的话count(*)就将满足的数据加1,赋值给result。如果result大于0返回成功,反之返回失败

        调用存储过程  

        CALL myp3('join','8888')$   admin 数据john 8888

        

 

    #3、创建带out模式的存储过程

        #案例1:根据女神名,返回对应的男神名

            CREATE PROCEDURE myp4(IN girlName VARCHAR(20),OUT boyname VARCHAR(20))

            BEGIN

                SELECT bo.boyname INTO boyname #满足传入的女神名=连接查询的gir.name into赋值给 输出模式boyname

                FROM boys bo

                INNER JOIN beauty gir ON bo.id=gir.`boyfriend_id`

                WHERE gir.name = girlName;

            END $

        

        #调用

        #定义一个用户变量

            SET @boyname=''$   #接收返回值的变量

        #调用myp4

            CALL myp4('热巴',@boyname)$

        #查看用户变量@boyname

            SELECT @boyname$

        

 

    #案例2:根据女神名,返回对应的男身名和魅力值

        多个out模式 bo.boyName,bo.userCP INTO boyName,userCP 满足筛选条件的 将男神名与CP值分别into到两个输出变量

            CREATE PROCEDURE mpy5(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20),OUT userCP INT)

            BEGIN

                SELECT bo.boyName,bo.userCP INTO boyName,userCP

                FROM boys bo

                INNER JOIN beauty gir ON bo.id=gir.boyfriend_id

                WHERE gir.name=beautyName;

            END $

    /*set @boyname;

    set @usercp;

    也可不用定义*/

 

    #调用mpy5

        CALL mpy5('小昭',@boyname,@usercp)$

    #查看调用结果

        SELECT @boyname,@usercp$

        

        

 

    #4.创建带inout模式参数的存储过程

        #案例1:传入a和b两个值,最终a和b都翻倍并返回

            CREATE PROCEDURE myp6(INOUT a INT,INOUT b INT)

            BEGIN

                SET a=a*2;   #a和b都为局部变量 直接*2

                SET b=b*2;

            END $

        

        #定义用户变量赋值

            SET @a=8$

            SET @b=9$

        #调用 并传入参数

            CALL myp6(@a,@b)$

        #查看调用存储过程结果

            SELECT @a,@b$

        

 

#三、删除存储过程

        语法: DROP PROCEDURE 存储过程名

        DROP PROCEDURE test2;

        DROP PROCEDURE test1,test2;#错误的语法 报错

 

#四、查看存储过程的信息

        DESC myp2;#错误的存储信息

        SHOW CREATE PROCEDURE myp2;

        

 

#存储过程案例

    #一、创建存储过程或函数实现传入用户名和密码,插入到admin表中

        CREATE PROCEDURE test1(IN `name` VARCHAR(10),IN `passwords` VARCHAR(16))

        BEGIN

            INSERT INTO admin(username,`password`)

            VALUE(`name`,passwords);

        END $

        #调用test1

        CALL test1('jack','6666')$

    存储过程成功创建 与 调用成功插入

    

    SELECT * FROM admin$

    

 

    #二、创建存储过程或函数实现传入女神编号,返回女神名称和女神电话

        CREATE PROCEDURE test2(IN beautyId INT,OUT beautyName VARCHAR(20),OUT phone VARCHAR(11))

        BEGIN

            SELECT gir.name,gir.phone INTO beautyName,phone

            FROM beauty gir

            WHERE gir.id=beautyId;

        END $

    #调用test2 传入女神3 ID

        CALL test2(3,@beautyName,@phone)$

        SELECT @beautyName,@phone$

        

 

    #三、创建存储过程或函数实现传入两个女神生日,返回大小

        CREATE PROCEDURE test3(INT date1 DATETIME,INT date2 DATETIME,OUT result VARCHAR(2))

        BEGIN

            SELECT DATEDIFF(date1,date2) INTO result;

            SELECT result,

            CASE

                WHEN result>0 THEN '大'

                WHEN result<0 THEN '小'

                ELSE '相等'

            END;

        END $

        CALL test3(NOW(),'1996-1-6',@result)$

 

 

 

 

 

 

 

 

mysql存储过程中使用动态SQL 1.简介 mysql存储过程可以使用预编译语句的方式来使用动态SQL,主要就是将SQL字符串预编译为statement,然后执行次语句: SET @sql = sql PREPARE stmt_name FROM @sql; EXECUTE stmt_name; {DEALLOCATE | DROP} PREPARE stmt_name; SET @sql:设置SQL字符串变量,一般为用户变量,即前面带有@的变量 PREPARE stmt_name FR. 阅读详情

相关推荐

哨兵2号遥感影像解析全流程:步骤、算法与AI应用详解

未来,多源数据融合与边缘计算技术的应用将进一步拓展遥感解析的边界。波段合成:选择10m分辨率波段(如B2、B3、B4、B8)进行Layer Stacking,生成多光谱影像。| 分类与识别 | Scikit-Learn、PyTorch | SVM、CNN、K-Means聚类 | 地块分类、目标检测 || 数据预处理 | SNAP、Sen2Cor | 大气校正、几何校正 | L2A产品生成、格式转换 || 波段融合 | ENVI、GDAL | Layer Stacking、重采样 | 多光谱影像合成 |

zhz5214的博客 2715

mysql 查询结果作为参数_如何将数据库查询出来的字段值作为参数传入下一个请求中...

前面我们讲过,如何将jmeter和plsql数据库连接起来,总体思路就是添加一个JDBC Connection Configuration,将plsql要连接的数据库信息配置好,然后添加一个sql的数据库请求jdbc request。那么现在有个问题,就是如果我要把数据库查询到的结果,作为下一个请求的入参,这个怎么搞呢?测试需求:提出每个小组派4张单子测试步骤:1、查询出小组2、每个小组派发4张单...

weixin_34052529的博客 5892

【ue4】【新手入门】|静态网格模型碰撞设置和合并Actor(合并静态网格体)

上一期学到把构建好的房子模型变成一个静态网格体(也是一个模型)但是静态网格体是没有碰撞的 所以要给这个模型设置碰撞。

m0_63501513的博客 4420

mysql中“接受一个SQL语句作为参数,并返回该SQL语句的结果集”:亲测有效;;;

【代码】mysql中“接受一个SQL语句作为参数,并返回该SQL语句的结果集”:亲测有效;;;

weixin_50235904的博客 364

Win10文件夹只读属性自动恢复?彻底解决方法解析

Win10文件夹只读属性自动恢复?彻底解决方法解析在Windows系统使用过程中,文件权限管理常会遇到棘手问题。最近多位用户反馈:取消文件夹只读属性后,系统却自动恢复该设置,导致无法正常复制或修改文件。本文将深入分析该现象的产生原因,并提供多种解决方案,帮助开发者彻底摆脱权限困扰。

mmoo_python的博客 7535

基于多智能体深度强化学习的空地协同通信系统轨迹设计与访问控制

所属子方向: UAV assisted communication 名词注释 coordinated:协调、协同 base stations 基站,公用移动通信基站,是移动设备接入互联网的接口设备,是指在一定的无线电覆盖区中,通过移动通信交换中心,与移动电话终端之间进行信息传递的无线电收发信电台。 UAV-BS:无人机基站 cooperative-competitive game:合作竞争博弈 throughput :吞吐量,每秒比特数 bps,bits per second Determinis

skysys的研究小屋 4970

存储过程,传入值为sql语句的笔记。

一般的存储过程的传入参数是 具体的值,过程中利用传入的值去计算或是操作。 工作中往往会碰到一些偏向动态的过程操作,例如根据传来的sql语句改变游标。    首先游标中的字段是要确定的,无论传递什么样的sql进来,所查询出来的游标内容是一定的。 如果有了上述的保障,就可以行动了。 首先是创建一个package,这个package种 需要声明 一个cursor Type,用作动态游标。 ...

懒得不想说话 418

看懂 SAP S/4HANA 产品主数据里的 GTIN:一串号码背后的全球商品识别与业务协同

SAP S/4HANA中的GTIN管理是企业供应链运营的关键环节。本文深入解析GTIN的业务内涵及其在SAP系统中的实现方式:1) GTIN是全球通用的商品标识码,不同于企业内部物料编码;2) SAP主数据中GTIN与计量单位强绑定,需为不同包装层级维护独立GTIN;3) 同一产品可能因渠道、供应商差异存在多个GTIN;4) GTIN贯穿零售POS、仓储管理、EDI订单等核心业务流程;5) 通过典型案例说明错误维护GTIN将导致收银异常、仓库作业低效等运营问题。文章强调GTIN管理需结合包装层级、计量单位等

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1433

SQL存储过程使用介绍

在数据库编程过程中经常会用到存储过程 , 相比 SQL 语句 , 存储过程更方便 , 快速 , 安全 ; 先将存储过程的相关介绍和使用方法总结如下 ;1. 存储过程的概念存储过程 (Stored Procedure) 是在大型数据库系统中 , 一组为了完成特定功能的 SQL 语句集 , 存储在数据库中 , 经过第一次编译后再次调用不需要再次编译 , 用户通过指定存储过程的名字并给出参数 (如果该存储

EnskDeCode 16万+

【AIZ智能体】Codex 全能AI助手从部署到使用实战操作详解

Codex 全能AI助手从部署到使用实战操作详解

congge 2990

跳蛛优化算法(JSOA)详解:从生物启发到算法实现

摘要: 跳蛛优化算法(JSOA)是一种受跳蛛狩猎行为启发的元启发式优化算法,通过模拟跳蛛的搜索猎物、迫害行为、跳跃捕食和信息素通信四种策略实现高效寻优。算法将跳蛛个体位置映射为候选解,利用物理学模型(匀加速运动、抛射轨迹)和随机策略(柯西分布、信息素机制)平衡全局探索与局部开发。JSOA具有参数少、收敛快的特点,适用于函数优化、路径规划等领域,其生物行为与数学抽象的对应关系(如表1所示)是其核心创新点。

qq_42212808的博客 127

SQL的存储语句

一、MySQL的存储的过程:一个存储过程是一个可编程的函数,它在数据库中创建并保存。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。 优点: 1、存储过程增强了SQL语句的功能和语句灵活性。存储过程可以用流控制编写,有很强的灵活性,可以完成复杂的判断和比较复杂的运算。        2、存储过程允许标准组件是编程。储存过程被创建后,可以在程序中被多次调

席伟娜的专栏 4897

12、对网络中容易出现的故障归纳

// 硬件问题 // 既然网络设备是一台机器,就有可能出现“疲劳”,从而导致各种各样的硬件故障出现。硬件的故障,一般有下面几种情况。 第一种是造成整机停机的故障。 停机属于重大安全问题,造成停机的原因一般有以下几点: (1)设备电源模块损坏,常见于一些单电源的盒式交换机;(2)设备在搬移过程中,因为碰撞,摔打造成的主板芯片受损;(3)一些使用超年限的设备,在重启的时候出现问题,起不来了;(4)因为机房环境不好,设备温度过高造成“假死”的现象。 设备停机属于重大安全问题,也是特别..

qq_43416206的博客 342

MySQL存储过程拼接复杂SQL

通过使用MySQL存储过程,我们可以方便地拼接和执行复杂的SQL语句,使得数据库操作更加灵活和高效。同时,存储过程也可以提高数据库的安全性和性能表现。因此,在合适的场景下,使用存储过程来处理复杂的逻辑是一个不错的选择。

牛肉胡辣汤 1460

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

mysql 存储过程 sql变量_mysql 存储过程 sql变量

MySql的存储过程存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句。存储过程和函数可以避免开发人员重复的编写相同的SQL语句。而且,存储过程和函数是在MySQL服务器中存储和执行的。可以减少客户端和服务器端的数据传输。创建存储过程和存储函数数据库系...文章jephon2016-11-07720浏览量mysql 存储过程2引用:htt...

weixin_42667269的博客 832

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

mysql 存储过程执行多条sql_MySQL - 存储过程动态执行 sql

存储过程动态执行 sql--存储过程名和参数,参数中in表示传入参数,out标示传出参数,inout表示传入传出参数create procedure p_procedurecode(in sumdate varchar(10))begindeclare v_sql varchar(500); --需要执行的SQL语句declare sym varchar(6);declare var1 va...

weixin_39835321的博客 2925

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

mysql存储过程实现动态sql

1.简介 mysql存储过程可以使用预编译语句的方式来使用动态SQL,主要就是将SQL字符串预编译为statement,然后执行次语句: SET @sql = sql PREPARE stmt_name FROM @sql; EXECUTE stmt_name; {DEALLOCATE | DROP} PREPARE stmt_name; SET @sql:设置SQL字符串变量,一般为用户变量,即前面带有@的变量 PREPARE ...

hzp666的博客 5259

mysql存储过程之动态sql

mysql存储过程之动态sql  Mysql 5.0 以后,支持了动态sql语句,我们可以通过传递不同的参数得到我们想要的值   这里介绍两种在存储过程中的动态sql:     set sql = (预处理的sql语句,可以是用concat拼接的语句)   set @sql = sql   PREPARE stmt_name FROM @sql;   EXECUTE stmt_name;   {DEALLOCATE | DROP} PREPARE 

yimenglin的博客 1035

如何使用SQL系列 之 如何在MySQL中使用存储过程

通常,当使用关系型数据库时,你直接在应用程序代码中发出单独的结构化查询语言(SQL)查询来检索或操作数据,如`SELECT`、`INSERT`、`UPDATE`或`DELETE`。这些语句直接作用于并操作底层数据库表。如果相同的语句或一组语句中使用多个应用程序访问同一个数据库,他们经常重复的在单独的应用程序。 与许多其他关系型数据库管理系统类似,MySQL支持使用存储过程。存储过程帮助组织一个或多个SQL语句重用在一个共同的名字,将常见的业务逻辑封装在数据库本身。这样的过程可以从访问数据库的应用程序中调用

码觉客的博客 1万+

MYSQL存储过程—执行动态SQL

存储过程中经常使用字符串拼接SQL语句,示例代码如下: SET @selectSql = 'SELECT RECID, FCODE, FNAME, FDISCOUNT, FIMAGE, FVIDEO, FTYPE, FSORT, FISHOT, FPHONE, FCONTACT, FADDR, FADMINMAPNM, FLNG, FLAT, FCREATOR, FCREATETM FROM tsvbase '; IF(paintName<>'')THEN SET @

guoyp2126的博客 5974

sql存储过程转mysql_sql Sever的存储过程转换为mysql的

总体来说,sql sever和Mysql的存储过程的思路都是一样的,但是在语法和结构上还是有很大的区别的。1.在mysql中写存储过程所有的dbo都要去掉。2.每一个sql语句后面都需要加上;否则报错;4. 再说参数,在MSSQL中我们一般会这么定义参数CREATE PROCEDURE PROC_ST(@operator varchar(300),@ProcDate datetime,@Err...

weixin_35565522的博客 376

mysql 存储过程中使用动态sql语句

简单的存储过程各个关键字的用法: CREATE DEFINER = CURRENT_USER PROCEDURE `NewProc`(in _xnb varchar(50)) BEGIN ## 定义变量 DECLARE _num FLOAT(14,6) DEFAULT 0; #...

813

MySQL 存储过程执行动态拼接SQL

1.该注意的点都在存储过程代码中已经说明 DROP PROCEDURE IF EXISTS init_test_transfer_data; CREATE PROCEDURE init_test_transfer_data() BEGIN DECLARE v_i INT DEFAULT 1; DECLARE v_limit INT DEFAULT 100000; # 对...

After 95 6571

mysql 存储过程执行动态sql

定义存储过程: DELIMITER $$ DROP PROCEDURE IF EXISTS pro_up_base_info$$ CREATE PROCEDURE pro_up_base_info ( IN t_org_no VARCHAR (32) out t_out varchar(32) ) BEGIN //中件内容具体的变量定义,语句等等 END$$ DELIMI...

sd_csdn_scy的博客 675

mysql存储过参数拼接_mysql 存储过程动态拼接sql并执行赋值

CREATE DEFINER = CURRENT_USER PROCEDURE `NewProc`(in _xnb varchar(50))BEGIN## 定义变量DECLARE _num FLOAT(14,6) DEFAULT 0;## @表示全局变量 相当于php $## 拼接赋值 INTO 必须要用全局变量不然语句会报错SET @strsql = CONCAT('SELECT SUM(',_...

weixin_31108739的博客 2998

mssql 存储过程转mysql_sql Sever的存储过程如何转换为mysql

sql Sever的存储过程如何转换为mysql总体来说,sql sever和Mysql的存储过程的思路都是一样的,但是在语法和结构上还是有很大的区别的。1. 在mysql中写存储过程所有的dbo都要去掉。2. 在sql sever中查询分析器直接用create PROCEDURE就可以,但是在mysql中必须用DELIMITER$$来开头,因为在mysql中认定“;”为结束符号,所以我们必须要改...

weixin_39622150的博客 417
上一篇: Mysql_sql的系统变量和自定义变量
下一篇: Mysql_function函数介绍
YanQiu_Only
博客等级 码龄10年 6粉丝 21原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值