变量定义:
DECLARE variable_name [,variable_name...] datatype [DEFAULT value]; |
其中,datatype为mysql的数据类型,如:INT, FLOAT, DATE, VARCHAR(length)
例:
DECLARE l_int INT unsigned default 4000000;
DECLARE l_numeric NUMERIC(8,2) DEFAULT 9.95;
DECLARE l_date DATE DEFAULT '1999-12-31';
DECLARE l_datetime DATETIME DEFAULT '1999-12-31 23:59:59';
DECLARE l_varchar VARCHAR(255) DEFAULT 'This will not be padded';
变量赋值
SET 变量名 = 表达式值 [,variable_name = expression ...]
参数
mysql存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT
Create procedure|function([[IN |OUT |INOUT ] 参数名 数据类形...]) |
IN 输入参数
表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值
OUT 输出参数
该值可在存储过程内部被改变,并可返回
INOUT 输入输出参数
调用时指定,并且可被改变和返回
IN参数例子:
创建
mysql> CREATE PROCEDURE sp_demo_in_parameter(IN p_in INT)
mysql> BEGIN SELECT p_in; /*查询输入参数*/
mysql> SET p_in=2; /*修改*/
mysq> select p_in; /*查看修改后的值*/
mysql> END;
执行结果:
mysql> set @p_in=1;
mysql> call sp_demo_in_parameter(@p_in);
+------+
| p_in |
+------+
| 1 |
+------+
+------+
| p_in |
+------+
| 2 |
+------+
mysql> select @p_in;
+-------+
| @p_in |
+-------+
| 1 |
+-------+
以上可以看出,p_in虽然在存储过程中被修改,但并不影响@p_id的值
OUT参数例子
创建:
mysql> CREATE PROCEDURE sp_demo_out_parameter(OUT p_out INT)
mysql> BEGIN SELECT p_out;/*查看输出参数*/
mysql> SET p_out=2;/*修改参数值*/
mysql> SELECT p_out;/*看看有否变化*/
mysql> END;
执行结果:
mysql> SET @p_out=1;
mysql> CALL sp_demo_out_parameter(@p_out);
+-------+
| p_out |
+-------+
| NULL |
+-------+
/*未被定义,返回NULL*/
+-------+
| p_out |
+-------+
| 2 |
+-------+
mysql> SELECT @p_out;
+-------+
| p_out |
+-------+
| 2 |
+----------+
INOUT参数例子:
mysql> CREATE PROCEDURE sp_demo_inout_parameter(INOUT p_inout INT)
mysql> BEGIN SELECT p_inout;
mysql> SET p_inout=2;
mysql> SELECT p_inout; END;
执行结果:
set @p_inout=1
call sp_demo_inout_parameter(@p_inout) //
+---------+
| p_inout |
+---------+
| 1 |
+---------+
+---------+
| p_inout |
+---------+
| 2 |
+---------+
select @p_inout;
+----------+
| @p_inout |
+----------+
| 2 |
+----------+
用户变量
1、 在mysql客户端使用用户变量
mysql> SELECT 'Hello World' into @x;
mysql> SELECT @x;
+-------------+
| @x |
+-------------+
| Hello World |
+-------------+
mysql> SET @y='Goodbye Cruel World';
mysql> select @y;
+---------------------+
| @y |
+---------------------+
| Goodbye Cruel World |
+---------------------+
mysql> SET @z=1+2+3;
mysql> select @z;
+------+
| @z |
+------+
| 6 |
+------+
2、 在存储过程中使用用户变量
mysql> CREATE PROCEDURE GreetWorld( ) SELECT CONCAT(@greeting,' World');
mysql> SET @greeting='Hello';
mysql> CALL GreetWorld( );
+----------------------------+
| CONCAT(@greeting,' World') |
+----------------------------+
| Hello World |
+----------------------------+
3、 在存储过程间传递全局范围的用户变量
mysql> CREATE PROCEDURE p1( ) SET @last_procedure='p1';
mysql> CREATE PROCEDURE p2( ) SELECT CONCAT('Last procedure was ',@last_procedure);
mysql> CALL p1( );
mysql> CALL p2( );
+-----------------------------------------------+
| CONCAT('Last procedure was ',@last_procedure) |
+-----------------------------------------------+
| Last procedure was p1 |
+-----------------------------------------------+
注意:
①用户变量名一般以@开头
②滥用用户变量会导致程序难以理解及管理
注释
mysql存储过程可使用两种风格的注释
双模杠:--
该风格一般用于单行注释
c风格:/* 注释内容 */ 一般用于多行注释
相关推荐
- **参数**: 存储过程可以包含输入参数、输出参数以及输入输出参数。 - **局部变量**: 在存储过程中可以定义局部变量,用于临时存储数据。局部变量的作用域仅限于当前存储过程。 #### 七、循环结构 - 存储过程中...
存储过程和函数可以接收参数,这些参数可以是输入参数(IN),也可以是输出参数(OUT)。在存储过程定义中,可以通过“ins_”前缀来声明输入参数。此外,还可以使用DECLARE关键字声明局部变量,如s_age和state。 6....
在MySQL中,存储过程和函数是类似的编程结构,但函数必须返回一个值,而存储过程可以有输入输出参数,但不一定需要返回值。 #### 13. 元数据 存储过程的元数据包括其定义、参数信息、执行情况等,可以通过系统表或...
4. **存储过程的参数**:讨论了存储过程中的输入参数(IN)、输出参数(OUT)和输入/输出参数(INOUT),以及如何在过程中使用和返回参数值。 5. **局部变量**:在存储过程中定义和使用局部变量的方法,以及它们与...
存储过程可以接受参数,有输入、输出和输入输出参数类型,同时支持变量声明、流程控制语句(如IF/ELSE、CASE、WHILE等),从而实现灵活的控制流程。 【存储过程】 存储过程是一组预编译的SQL语句,它可以在需要时...
### MySQL存储过程详解 #### 存储过程定义与示例 存储过程是一种预先编写并编译好的SQL程序,它可以被当作一个独立的对象保存在数据库中,并可通过简单的调用来执行复杂操作。MySQL 5.0 版本引入了存储过程功能,...
MySQL 5.1参考手册 这是MySQL参考手册的翻译版本,关于MySQL参考手册,请访问dev.mysql.com。 原始参考手册为英文版,与英文版参考手册相比,本翻译版可能不是最新的。 This translation was done by MySQL ...
需要注意的是,MySQL存储过程的参数名称前不应有`@`符号,这与用户定义的变量不同。存储过程内部的变量声明时也不需要`@`,但外部引用时需要。 以下是一个简单的存储过程示例,用于计算两个数的和: ```sql DROP ...
MySQL 5.1参考手册.chm 前言 1. 一般信息 1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL...
在Oracle数据库中,存储过程具有类似于编程语言的特性,包括数据类型、流程控制结构以及输入输出参数。以下是对这些知识点的详细说明: ### 存储过程的基本语法 创建存储过程的基本语法如下: ```sql CREATE ...
MySQL 5.1参考手册 目录 前言 1. 一般信息 1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. ...
2.3.13. 测试MySQL安装 2.3.14. 在Windows环境下对MySQL安装的故障诊断与排除 2.3.15. 在Windows下升级MySQL 2.3.16. Windows版MySQL同Unix版MySQL对比 2.4. 在Linux下安装MySQL 2.5.在Mac OS X中安装MySQL 2.6...
自定义函数是用户为了完成特定逻辑而创建的函数,它可以有输入参数(in)、输出参数(out)或两者都有(inout)。创建自定义函数之后,可以通过select函数名()的方式调用它。对函数的维护管理包括查看定义、修改定义...
2.3.13. 测试MySQL安装 2.3.14. 在Windows环境下对MySQL安装的故障诊断与排除 2.3.15. 在Windows下升级MySQL 2.3.16. Windows版MySQL同Unix版MySQL对比 2.4. 在Linux下安装MySQL 2.5.在Mac OS X中安装MySQL ...
测试MySQL安装 2.3.14. 在Windows环境下对MySQL安装的故障诊断与排除 2.3.15. 在Windows下升级MySQL 2.3.16. Windows版MySQL同Unix版MySQL对比 2.4. 在Linux下安装MySQL 2.5.在Mac OS X中安装MySQL...
- 输入/输出处理:GET、POST请求,表单处理,文件上传等。 - 数据库连接:使用PDO或mysqli扩展与MySQL交互,执行SQL语句。 - 错误和异常处理:错误报告级别,try-catch机制。 - 面向Web的功能:会话管理、URL...
- `<iostream>`: 基本输入输出支持。 - `<stdlib.h>`: 提供了一些标准库函数。 - `<ctime>`: 时间处理函数。 - `<cmath>`: 数学函数。 - `<termios.h>`: 终端输入输出设置。 - `<sstream>`: 字符串流支持。 - `...