搜索
首页
笔记
案例
关于
课程列表
MySQL
数据库操作
数据表操作
Mysql列类型及列属性
MySQL常用函数
MySQL增删改
MySQL查询
JOSN的支持
MySQL流程控制语句
视图
存储过程及存储函数
变量与游标
事务
触发器
权限及安全管理
MySQL日志
二进制日志
Mysql5.7复制功能
数据备份与恢复
性能优化
课程导航
计算机基础知识
C
Linux
linux常用软件
计算机网络
程序员修养
设计模式
工具
Git
composer
vim
IntelliJ IDEA
wireshark
laravel
Spring
SpringMVC
Maven
数据库
MySQL
Redis
MongoDB
JDBC
Mybatis
MyBatis-Plus
服务端编程
PHP
Java
shell script
JavaWeb
HTML / CSS
HTML
CSS
HTML5
CSS3
BOOTSTRAP
JavaScript
JavaScript
JQuery
layui
存储过程及存储函数
事务
变量与游标
## 变量 mysql中变量分为**全局变量**及**局部变量** ### 变量声明 全局变量以@开头,不需要声明直接设置即可如:SET @param1='hello' 局部变量声明: DECLARE 变量名1[,变量名2...] 数据类型 [默认值]; 如:declare num1 int(10) default 10; ### 变量赋值 变量赋值方法局部变量和全局变量都一样,有两种方式 * SET 如:set num1 = num1 + num2; set @param1= num1 + num2; * select col_name[,...] into var_name[,...] table_expr [where...]; 如 SELECT name,age INTO @param1,num1 FROM users WHERE user_id=1; ### 实践 ``` -- 根据路程计算车费,3公里内按6远计算,超过的距离按每公里1.2元计算 -- distance 路程 CREATE PROCEDURE p1(in distance FLOAT) BEGIN DECLARE d_money FLOAT DEFAULT 0; IF distance>3 THEN SET d_money=6+(distance-3)*1.2; ELSE SET d_money=6; END IF; SELECT d_money; END; ``` ## 游标 ### 定义 declare 游标名 CURSOR FOR SELECT 语句 ### 开启关闭游标 open 游标名 close 游标名 ### 取游标数据 FETCH 游标名 INTO 变量名 ### 实践 ``` CREATE TABLE IF NOT EXISTS test_cursor( num1 INT(10) UNSIGNED NOT NULL DEFAULT 0, num2 INT(10) UNSIGNED NOT NULL DEFAULT 0 ); INSERT INTO test_cursor(num1,num2) VALUES(1,1),(2,2),(3,3); CREATE DEFINER=`root`@`localhost` PROCEDURE `test_cursor`() BEGIN DECLARE sum INT(10) DEFAULT 0; DECLARE n1,n2 INT(10); DECLARE done INT DEFAULT 0; DECLARE cur CURSOR FOR SELECT num1,num2 FROM test_cursor; -- 定义变量必须要放在定义游标前 DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1; -- 游标结束后将done设置为1,以结束循环 OPEN cur; -- 打开游标 WHILE done=0 DO FETCH cur INTO n1,n2; IF done=0 THEN -- 注意这里为什么加IF条件,不加的话,最后一个值会被多加一遍 SET sum=sum+n1+n2; END IF; END WHILE; CLOSE cur; -- 关闭游标 SELECT sum; END ```
存储过程及存储函数
事务
文章目录