mysql中的DECLARE语句是在复合语句中声明变量的指令。 
(1)Example with two DECLARE statements 
两个DECLARE语句的实例 
CREATE PROCEDURE p8 () 
BEGIN 
DECLARE a INT; 
DECLARE b INT; 
SET a = 5; 
SET b = 5; 
INSERT INTO t VALUES (a); 
SELECT s1 * a FROM t WHERE s1 >= b; 
END; // /* I won't CALL this */ 
在过程中定义的变量并不是真正的定义,你只是在BEGIN/END块内定义了而已(译注:也就是形参)。注意这些变量和会话变量不一样,不能使用修饰符@你必须清楚的在BEGIN/END块中声明变量和它们的类型。变量一旦声明,你就能在任何能使用会话变量、文字、列名的地方使用。 
(2)Example with no DEFAULT clause and SET statement 
没有默认子句和设定语句的例子 
CREATE PROCEDURE p9 () 
BEGIN 
DECLARE a INT /* there is no DEFAULT clause */; 
DECLARE b INT /* there is no DEFAULT clause */; 
SET a = 5; /* there is a SET statement */ 
SET b = 5; /* there is a SET statement */ 
INSERT INTO t VALUES (a); 
SELECT s1 * a FROM t WHERE s1 >= b; 
END; // /* I won't CALL this */ 
有很多初始化变量的方法。如果没有默认的子句,那么变量的初始值为NULL。你可以在任何时候使用SET语句给变量赋值。 
(3)Example with DEFAULT clause 
含有DEFAULT子句的例子 
CREATE PROCEDURE p10 () 
BEGIN 
DECLARE a, b INT DEFAULT 5; 
INSERT INTO t VALUES (a); 
SELECT s1 * a FROM t WHERE s1 >= b; 
END; // 
我们在这里做了一些改变,但是结果还是一样的。在这里使用了DEFAULT子句来设定初始值,这就不需要把DECLARE和SET语句的实现分开了。  
(4)Example of CALL 
调用的例子 
mysql> CALL p10() // 
+--------+ 
| s1 * a | 
+--------+ 
| 25 | 
| 25 | 
+--------+ 
2 rows in set (0.00 sec) 
Query OK, 0 rows affected (0.00 sec) 
结果显示了过程能正常工作 
(5) Scope 
作用域 
CREATE PROCEDURE p11 () 
BEGIN 
DECLARE x1 CHAR(5) DEFAULT 'outer'; 
BEGIN 
DECLARE x1 CHAR(5) DEFAULT 'inner'; 
SELECT x1; 
END; 
SELECT x1; 
END; // 
现在我们来讨论一下作用域的问题。例子中有嵌套的BEGIN/END块,当然这是合法的。同时包含两个变量,名字都是x1,这样也是合法的。内部的变量在其作用域内享有更高的优先权。当执行到END语句时,内部变量消失,此时已经在其作用域外,变量不再可见了,因此在存储过程外再也不能找到这个声明了的变量,但是你可以通过OUT参数或者将其值指派 给会话变量来保存其值。  
调用作用域例子的过程: 
mysql> CALL p11()// 
+-------+ 
| x1 | 
+-------+ 
| inner | 
+-------+ 
+-------+ 
| x1 | 
+-------+ 
| outer | 
+-------+ 
我们看到的结果时第一个SELECT语句检索到最内层的变量,第二个检索到第二层的变量

mysql中declare语句用法详解相关推荐

  1. mysql中 where in 用法详解

    https://blog.csdn.net/haibo0668/article/details/52584307 sssss mysql中 where in 用法详解 我是高手高手高高手 2016-0 ...

  2. MySQL中Case When用法详解

    最近,在学习Hive基础知识时,遇到了遇到了Case When Else End语法,以前学习MySQL时忽略了这部分知识点,现总结一下相关的知识给大家.首先练习一个例子如下: 一.学生课程成绩统计 ...

  3. Python中import语句用法详解

    一. 什么是模块(module)? 在实际应用中,有时程序所要实现功能比较复杂,代码量也很大.若把所有的代码都存储在一个文件中,则不利于代码的复用和维护.一种更好的方式是将实现不同功能的代码分拆到多个 ...

  4. mysql中declare语句用法_MySQL declare语句用法介绍

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

  5. MySQL中CONCAT()函数用法详解

    需求:需要将将俩字符串拼接在一起 1.MySQL中CONCAT()函数拼接字符串 CONCAT(str,str2,str3...) 可以将两个或者多个参数拼接在一起 注意事项: ①返回结果为连接参数产 ...

  6. mysql中in的用法详解

    一.基础用法 mysql中in常用于where表达式中,其作用是查询某个范围内的数据. select * from where field in (value1,value2,value3,-) 当 ...

  7. 使用php中的switch,php中switch语句用法详解_PHP

    本文介绍php中的switch语句的用法,它跟其他语句中的switch用法差不多的,但注意有有一个break语句. PHP中switch语句的标准语法: switch (expression) { c ...

  8. MySQL中的limit用法详解

    limit的详细用法 1.用于强制返回指定的记录行数 在查询中,经常要返回前几条或者中间某几行数据时,用到limit 语法如下: select * from table_name limit [off ...

  9. mysql中declare语句用法_mysql declare怎么用

    Q4:mysql declare cursor只能放在前面吗 本文中介绍了一个MySQL的存储过程,其中涉及Cursor的使用 示例如下: 复制代码 代码如下: CREATE PROCEDURE `j ...

最新文章

  1. 新转机!2020年想裸辞的程序员们注意了
  2. 模板 -计算几何注意事项
  3. Swagger增强神器:Knife4j!用它轻松实现接口搜索、Word下载、接口过滤...
  4. 解决“cannot open git-receive-pack”错误
  5. 线程池模式比较-------ICE线程池模型------L/F领导者跟随者模式
  6. atlas单机模式代码_生存游戏竞争太大怎么办?在海盗游戏《ATLAS》也可佛系生存...
  7. git push代码出现push rejected错误
  8. 【Java中级】(三)IO
  9. leetcode82. 删除排序链表中的重复元素 II
  10. 该学Java或.NET?
  11. 【零基础学Java】—网络编程(五十三)
  12. ESL系统的Docker化部署
  13. Win10使用Geth搭建本地开发私有链(2021版)
  14. 第一篇博客——自我介绍篇
  15. 学python能干嘛-学 Python 都用来干嘛的?
  16. Qt利用avilib实现录屏功能,生成avi文件
  17. Codeforces Beta Round #82 (Div. 2) C. Buns(多重背包)
  18. Python复杂网络分析库networkx 看这一篇就够了
  19. c++ybt 1702:异或运算
  20. IDEA + SSM + Maven + MySQL搭建一个论坛系统(非常详细)

热门文章

  1. 2015 年最热门的国人开发开源软件 TOP 50
  2. 百练 / 2016计算机学科夏令营上机考试: E
  3. (++a)+=(a++)和(++a)=(++a)+(a++)的区别
  4. MacOS 更新系统或XCode终端Git报错
  5. 数字信号内插方法的python实现
  6. 【Dos】常见的Dos攻击
  7. bash中的字符串长度
  8. 前端——动态生成表格
  9. 移动app隐私政策规范条款参考模板示例
  10. 机场航班起降与协调管理系统飞机航班(含源码+论文+答辩PPT等)