mysql中declare语句用法详解
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语句用法详解相关推荐
- mysql中 where in 用法详解
https://blog.csdn.net/haibo0668/article/details/52584307 sssss mysql中 where in 用法详解 我是高手高手高高手 2016-0 ...
- MySQL中Case When用法详解
最近,在学习Hive基础知识时,遇到了遇到了Case When Else End语法,以前学习MySQL时忽略了这部分知识点,现总结一下相关的知识给大家.首先练习一个例子如下: 一.学生课程成绩统计 ...
- Python中import语句用法详解
一. 什么是模块(module)? 在实际应用中,有时程序所要实现功能比较复杂,代码量也很大.若把所有的代码都存储在一个文件中,则不利于代码的复用和维护.一种更好的方式是将实现不同功能的代码分拆到多个 ...
- mysql中declare语句用法_MySQL declare语句用法介绍
MySQL declare语句是我们经常用到的语句,下文就为您举例说明了MySQL declare语句的用法,希望对您学习MySQL declare语句的使用能有所帮助. MySQL declare语 ...
- MySQL中CONCAT()函数用法详解
需求:需要将将俩字符串拼接在一起 1.MySQL中CONCAT()函数拼接字符串 CONCAT(str,str2,str3...) 可以将两个或者多个参数拼接在一起 注意事项: ①返回结果为连接参数产 ...
- mysql中in的用法详解
一.基础用法 mysql中in常用于where表达式中,其作用是查询某个范围内的数据. select * from where field in (value1,value2,value3,-) 当 ...
- 使用php中的switch,php中switch语句用法详解_PHP
本文介绍php中的switch语句的用法,它跟其他语句中的switch用法差不多的,但注意有有一个break语句. PHP中switch语句的标准语法: switch (expression) { c ...
- MySQL中的limit用法详解
limit的详细用法 1.用于强制返回指定的记录行数 在查询中,经常要返回前几条或者中间某几行数据时,用到limit 语法如下: select * from table_name limit [off ...
- mysql中declare语句用法_mysql declare怎么用
Q4:mysql declare cursor只能放在前面吗 本文中介绍了一个MySQL的存储过程,其中涉及Cursor的使用 示例如下: 复制代码 代码如下: CREATE PROCEDURE `j ...
最新文章
- 新转机!2020年想裸辞的程序员们注意了
- 模板 -计算几何注意事项
- Swagger增强神器:Knife4j!用它轻松实现接口搜索、Word下载、接口过滤...
- 解决“cannot open git-receive-pack”错误
- 线程池模式比较-------ICE线程池模型------L/F领导者跟随者模式
- atlas单机模式代码_生存游戏竞争太大怎么办?在海盗游戏《ATLAS》也可佛系生存...
- git push代码出现push rejected错误
- 【Java中级】(三)IO
- leetcode82. 删除排序链表中的重复元素 II
- 该学Java或.NET?
- 【零基础学Java】—网络编程(五十三)
- ESL系统的Docker化部署
- Win10使用Geth搭建本地开发私有链(2021版)
- 第一篇博客——自我介绍篇
- 学python能干嘛-学 Python 都用来干嘛的?
- Qt利用avilib实现录屏功能,生成avi文件
- Codeforces Beta Round #82 (Div. 2) C. Buns(多重背包)
- Python复杂网络分析库networkx 看这一篇就够了
- c++ybt 1702:异或运算
- IDEA + SSM + Maven + MySQL搭建一个论坛系统(非常详细)
热门文章
- 2015 年最热门的国人开发开源软件 TOP 50
- 百练 / 2016计算机学科夏令营上机考试: E
- (++a)+=(a++)和(++a)=(++a)+(a++)的区别
- MacOS 更新系统或XCode终端Git报错
- 数字信号内插方法的python实现
- 【Dos】常见的Dos攻击
- bash中的字符串长度
- 前端——动态生成表格
- 移动app隐私政策规范条款参考模板示例
- 机场航班起降与协调管理系统飞机航班(含源码+论文+答辩PPT等)