`
jayghost
  • 浏览: 440440 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

mysql中declare语句用法详解

    博客分类:
  • SQL
 
阅读更多

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中sql语句游标详解

    ### MySQL中SQL语句游标详解 #### 一、引言 在数据库开发过程中,当开发者需要逐条处理从查询结果集中获取的数据时,游标成为了一种非常实用且强大的工具。本文旨在深入探讨MySQL中游标的概念及其使用方法,帮助...

    mysql存储过程之case语句用法实例详解

    MySQL中的CASE语句是SQL语言中的一个重要组成部分,它在存储过程和复杂查询中扮演着条件判断的角色,使得代码更加简洁易读。CASE语句提供了两种形式:简单CASE和可搜索CASE。 1. 简单CASE语句: 简单CASE语句主要...

    mysql存储过程之游标(DECLARE)原理与用法详解

    MySQL存储过程中的游标(DECLARE)是处理查询结果集的重要工具,它允许程序逐行处理数据,而不是一次性加载所有结果。游标具有不同的模式,包括只读、不可滚动和敏感,每种模式都有其特定的应用场景。 只读模式的...

    mysql存储过程之if语句用法实例详解

    本篇文章将深入探讨MySQL存储过程中的`IF`语句及其相关用法。 首先,`IF`语句的基本语法如下: ```sql IF expression THEN statements; END IF; ``` 在这里,`expression`是一个布尔表达式,当其计算结果为`TRUE...

    mysql 存储过程应用(代码详解)

    ### MySQL存储过程应用详解 #### 一、存储过程概述 在MySQL中,存储过程是一种预编译好的SQL脚本,可以包含复杂的逻辑控制语句、循环结构以及事务处理等功能。通过存储过程,开发者可以在数据库服务器端执行一系列...

    MySQL定义异常和异常处理详解

    在MySQL中,异常定义和处理主要是通过`DECLARE`语句来实现的。 1. **异常定义** 异常定义是创建一个特定的条件(condition),这个条件关联到可能发生的错误或警告。语法如下: ```sql DECLARE condition_name ...

    mysql游标详解

    在 MySQL 中,游标是通过 DECLARE 语句定义的,例如: DECLARE fetchSeqCursor CURSOR FOR SELECT seqname, value FROM sys_sequence; 开启游标: OPEN fetchSeqCursor; fetch 数据: FETCH cursor INTO _...

    mysql 查询存储过程的 sql 语句.docx

    ### MySQL 查询存储过程详解 #### 一、存储过程概述 MySQL 存储过程是一种存储在 MySQL 服务器中的 SQL 代码段,它能够被多个客户端多次调用。存储过程的主要优势在于能够简化复杂的 SQL 查询,执行常见的任务,...

    Mysql5存储过程中文详解

    在MySQL5.0中,存储过程的引入极大地增强了数据库的功能性和灵活性。 ### 存储过程定义 存储过程是一种存储在数据库中的程序,它由一系列SQL语句组成,可以被多次调用而不必重新编译。这类似于编程语言中的函数或...

    Shell脚本中执行sql语句操作mysql的5种方法

    ### Shell脚本中执行SQL语句操作MySQL的五种方法详解 #### 一、引言 在日常的系统管理和维护工作中,尤其是对于自动化运维任务,如数据库备份与恢复等场景,常常需要通过Shell脚本来执行SQL语句来操作MySQL数据库。...

    mysql中游标的使用案例详解(学习笔记)

    ### MySQL中游标的使用案例详解 #### 一、游标概念 在MySQL中,游标是一种重要的机制,它允许用户逐步处理查询结果集中的每一行数据。游标提供了一种方式来迭代处理查询结果,这对于需要逐行访问数据的情况特别有用...

    Mysql存储过程常用语句模板(含变量,if,三种循环等等)

    通过上述内容的学习,我们了解到 MySQL 存储过程中的基本概念及其使用方法。正确地使用这些结构可以帮助开发者更加高效地管理数据库操作,减少代码的复杂度,提升程序的性能。希望本文能为你在 MySQL 存储过程的学习...

    MySQL游标概念与用法详解

    MySQL游标是数据库管理系统提供的一种机制,允许程序按需逐行...了解其概念和正确使用方法,能帮助开发者更有效地处理数据库中的数据。在实际应用中,应当根据具体情况权衡是否使用游标,以达到最佳性能和资源利用。

    SQL语句大全(很全)sql语句用法

    ### SQL语句大全详解 #### 一、概述 SQL(Structured Query Language)是一种用于管理关系...以上是对SQL语句大全的详细介绍,涵盖了常见的SQL语句及其使用方法,旨在帮助数据库开发者和管理员更好地管理和操作数据。

    mysql存储过程详解

    ### MySQL存储过程详解 #### 存储过程简介 在MySQL中,存储过程是一种预先定义并编译好的SQL语句集合,它可以实现...同时,掌握好存储过程和函数的设计与使用方法,对于提高开发效率和减少维护成本也具有重要意义。

    MySQL存储过程详解

    通过本文的详细介绍,希望读者能够掌握存储过程的基本概念和使用方法,并能够在实际项目中灵活运用这一功能。 通过以上的介绍和示例,可以看出MySQL 5.0存储过程的强大之处,无论是对于数据库的管理还是对于应用...

Global site tag (gtag.js) - Google Analytics