MySQL declare语句用法介绍

MySQL declare语句用法介绍MySQLdeclare 语句是我们经常用到的语句 下文就为您举例说明了 MySQLdeclare 语句的用法 希望对您学习 MySQLdeclare 语句的使用能有所帮助 MySQLdeclare 语句是在复合语句中声明变量的指令 1 Examplewitht 两个 DECLARE 语句的实例 CREATEPROCED

MySQL declare语句是我们经常用到的语句,下文就为您举例说明了MySQL declare语句的用法,希望对您学习MySQL declare语句的使用能有所帮助。

MySQL declare语句是在复合语句中声明变量的指令。

  
  1. CREATE PROCEDURE p8 ()   
  2. BEGIN   
  3. DECLARE a INT;   
  4. DECLARE b INT;   
  5. SET a = 5;   
  6. SET b = 5;   
  7. INSERT INTO t VALUES (a);   
  8. SELECT s1 * a FROM t WHERE s1 >= b;   
  9. END; // /* I won’t CALL this */   

在过程中定义的变量并不是真正的定义,你只是在BEGIN/END块内定义了而已(译注:也就是形参)。注意这些变量和会话变量不一样,不能使用修饰符@你必须清楚的在BEGIN/END块中声明变量和它们的类型。变量一旦声明,你就能在任何能使用会话变量、文字、列名的地方使用。

  
  1. CREATE PROCEDURE p9 ()   
  2. BEGIN   
  3. DECLARE a INT /* there is no DEFAULT clause */;   
  4. DECLARE b INT /* there is no DEFAULT clause */;   
  5. SET a = 5; /* there is a SET statement */   
  6. SET b = 5; /* there is a SET statement */   
  7. INSERT INTO t VALUES (a);   
  8. SELECT s1 * a FROM t WHERE s1 >= b;   
  9. END; // /* I won’t CALL this */   

有很多初始化变量的方法。如果没有默认的子句,那么变量的初始值为NULL。你可以在任何时候使用SET语句给变量赋值。

  
  1. CREATE PROCEDURE p10 ()   
  2. BEGIN   
  3. DECLARE a, b INT DEFAULT 5;   
  4. INSERT INTO t VALUES (a);   
  5. SELECT s1 * a FROM t WHERE s1 >= b;   
  6. END; //   

我们在这里做了一些改变,但是结果还是一样的。在这里使用了DEFAULT子句来设定初始值,这就不需要把DECLARE和SET语句的实现分开了。 

  
  1. mysql> CALL p10() //   
  2. +——–+   
  3. | s1 * a |   
  4. +——–+   
  5. | 25 |   
  6. | 25 |   
  7. +——–+   
  8. 2 rows in set (0.00 sec)   
  9. Query OK, 0 rows affected (0.00 sec)   

结果显示了过程能正常工作

  
  1. CREATE PROCEDURE p11 ()   
  2. BEGIN   
  3. DECLARE x1 CHAR(5) DEFAULT ‘outer’;   
  4. BEGIN   
  5. DECLARE x1 CHAR(5) DEFAULT ‘inner’;   
  6. SELECT x1;   
  7. END;   
  8. SELECT x1;   
  9. END; //   
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/204754.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午7:37
下一篇 2026年3月19日 下午7:37


相关推荐

  • Kettle — 使用手册

    Kettle — 使用手册介绍 ETL 是 EXTRACT 抽取 TRANSFORM 转换 LOAD 加载 的简称 实现数据从多个异构数据源加载到数据库或其他目标地址 是数据仓库建设和维护中的重要一环 也是工作量较大的一块 Kettle 是 ETL 中其中一个开源工具 基于纯 Java 开发 kettle 有两种脚本 transformati 转换 和 Job 作业 Kettle 有三个主要组件 Spoon Kitchen P

    2026年3月20日
    1
  • 什么是防抖和节流?如何实现防抖和节流?

    什么是防抖和节流?如何实现防抖和节流?防抖 Debounce 和节流 Throttle 都是用来控制某个函数在一定时间内触发次数 两者都是为了减少触发频率 以便提高性能或者说避免资源浪费 毕竟 JS 操作 DOM 对象的代价还是十分昂贵的 应用场景 处理一些频繁触发的事件 例如 mousedown mousemove keyup keydown 等 不然的话 页面很可能会十分卡顿哦 防抖防抖就是指触发事件后在 n 秒内函数只能执行一次 如果在 n 秒内又触发了事件 则会重新计算函数执行时间 举个例子吧 例如 你是一个肯德基外卖配送员 每天专门

    2025年6月24日
    5
  • jdk1.8 HashMap扩容机制变化「建议收藏」

    jdk1.8 HashMap扩容机制变化「建议收藏」概述JDK1.8中的HashMap较于前代有了较大的变更,主要变化在于扩容机制的改变。在JDK1.7及之前HashMap在扩容进行数组拷贝的时候采用的是头插法,因此会造成并发情景下形成环状链表造成死循环的问题。JDK1.8中改用了尾插法进行数组拷贝,修复了这个问题。其次,JDK1.8开始HashMap改用数组+链表/红黑树组合的数据结构来提高查询效率,降低哈希冲突产生的链表过长导致的查询效率减缓现象。本文的主要内容是对JDK1.8中的扩容机制与前代进行比较。JDK1.8之前的扩容由res

    2022年6月22日
    28
  • 我的书单

    整理了一下自己购物车里的书单,推荐一下。

    2022年3月11日
    43
  • Coze智能体小白实战课:插件、工作流、知识库,保姆级教程从零上手

    Coze智能体小白实战课:插件、工作流、知识库,保姆级教程从零上手

    2026年3月14日
    1
  • navicat for mysql 激活码【在线注册码/序列号/破解码】

    navicat for mysql 激活码【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    835

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号