记一次使用mysql存储过程时,游标取值为空问题

call modify_collation(@num,@count_num)
> 1146 - Table 'test.table_name' doesn't exist
> 时间: 0.009s

 我在使用mysql存储过程时,打印时游标取值为空,报错找不到表。我的过程语句是这样的:

drop procedure if exists modify_collation;

DELIMITER //
create PROCEDURE modify_collation(out origin_num int(10),out count_num int(10))
COMMENT 'modify_collation' 
SQL SECURITY DEFINER
BEGIN
	DECLARE table_name VARCHAR(100);
	declare column_name VARCHAR(100);
	declare done int(10) default 0;
	declare collation_cursor cursor for SELECT table_name, column_name FROM INFORMATION_SCHEMA.COLUMNS 
	WHERE TABLE_SCHEMA = 'test' and collation_name = 'utf8mb4_0900_ai_ci';
	
	declare continue handler for not found set done = 1;
	
	select count(1) into origin_num from INFORMATION_SCHEMA.COLUMNS
	WHERE TABLE_SCHEMA = 'test' and collation_name = 'utf8mb4_0900_ai_ci';
	
	select origin_num;
	
	open collation_cursor ;
	set count_num := 0;
	mylp:loop
		FETCH collation_cursor into table_name,column_name;
		
		select table_name,column_name;
 		ALTER TABLE table_name MODIFY column_name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
		if done = 1 then
		 leave mylp;
		end if;
		set count_num := count_num +1;
	end loop;

	close collation_cursor;
	select count_num;
end//
DELIMITER ;

 执行了几遍,进入了loop循环,总是打印游标取值为空:

我执行定义游标时后面的 select 语句也能查询到数据,

SELECT table_name, column_name FROM INFORMATION_SCHEMA.COLUMNS 
	WHERE TABLE_SCHEMA = 'test' and collation_name = 'utf8mb4_0900_ai_ci';

最后发现,我定义的变量名字和查询的字段名字一样,所以单独查询sql的时候有数据,执行存储过程时,select后面查询的是变量,而不是表中的字段,变量没有赋值就查询的是空。

把定义的变量名字修改后,就正常了。

drop procedure if exists modify_collation;

DELIMITER //
create PROCEDURE modify_collation(out origin_num int(10),out count_num int(10))
COMMENT 'modify_collation' 
SQL SECURITY DEFINER
BEGIN
	DECLARE t_name VARCHAR(100);
	declare c_name VARCHAR(100);
	declare done int(10) default 0;
	declare collation_cursor cursor for SELECT table_name, column_name FROM INFORMATION_SCHEMA.COLUMNS 
	WHERE TABLE_SCHEMA = 'test' and collation_name = 'utf8mb4_0900_ai_ci';
	
	declare continue handler for not found set done = 1;
	
	select count(1) into origin_num from INFORMATION_SCHEMA.COLUMNS
	WHERE TABLE_SCHEMA = 'test' and collation_name = 'utf8mb4_0900_ai_ci';
	
	select origin_num;
	
	open collation_cursor ;
	set count_num := 0;
	mylp:loop
		FETCH collation_cursor into t_name,c_name;
		
		select t_name,c_name;
-- 		ALTER TABLE t_name MODIFY c_name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
		if done = 1 then
		 leave mylp;
		end if;
		set count_num := count_num +1;
	end loop;

	close collation_cursor;
	select count_num;
end//
DELIMITER ;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/678284.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

推荐系统学习 二

双塔模型的结构 用户的特征,我们知道用户ID还能从用户填写的资料和用户行为中获取很多特征,包括离散特征和连续特征。所有这些特征不能直接输入神经网络,而是要先做一些处理,比如用embedding层把用户ID映射到一个向量 跟之前我们…

BioTech - 计算大量 蛋白质结构预测结果 的聚类中心(Cluster)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/139419653 CASP16 的 H0215 样本,聚类之后,10个类别的最高置信度结果。 Agglomerative Clustering,即凝聚层次聚类,属于层次聚类算法,通过逐步合并或聚集数据点,…

璞华科技荣获《数据(产品)登记证书》,璞华易表进入地方数据资产入表、数据资产运营管理市场!

随着数字经济时代的飞速发展,数据要素在社会经济中的地位也变得越来越重要,成为超越传统土地、劳动力、技术和资金的新型关键资源,被誉为“第五要素”。这一变化不仅凸显了数据在当今社会的巨大价值,也引发了对数据确权、数据交易…

『大模型笔记』Transformer系列技术博文汇总!

Transformer系列技术博文汇总! 文章目录 第1篇:矩阵乘法概念解释第2篇:使用缩放点积方法的自注意力第3篇:深入探讨多头注意力、自注意力和交叉注意力第4篇:Transformer 架构第5篇:PostLN,PreLN…

一文了解帮助手册:含义、作用与制作

在日常的工作、学习和生活中,我们难免会使用到一些陌生的工具、软件或者设备,第一次使用时会感到迷茫。这时,一本有效的帮助手册就派上用场了,它能帮助用户快速上手产品,解决问题。什么是帮助手册?它有哪些…

教师服务期内可以调动吗

作为一名还在服务期内的老师,你可能会好奇:我在服务期内能不能换个学校教书?这个问题听起来简单,但实际上答案得看具体情况。 什么是服务期呢?简单来说,就是你和学校签了合同,得在校工作满五年&…

JVM虚拟机的故事

⭐️ JVM虚拟机 在编程世界的深处,有一个被誉为“万能翻译机”的存在,它就是JVM(Java Virtual Machine)虚拟机。它的诞生,不仅改变了编程语言的命运,更引领了一场跨平台的革命。 ⭐️ 一、起源与诞生 故事…

分集增益Diversity Gain与复用增益Multiplexing Gain

文章目录 概念DoF(Degrees of Freedom)复用增益(Multiplexing Gain)自由度(Degrees of Freedom, DoF)两者的关系实际应用关系总结具体关系例子结论 近场MIMO的分集与复用与远场MIMO有何不同 概念 在通信领…

记录jenkins pipeline ,git+maven+sonarqube+打包镜像上传到阿里云镜像仓库

1、阶段视图: 2、准备工作 所需工具与插件 jdk:可以存在多版本 maven:可以存在多版本 sonar-scanner 凭证令牌 gitlab:credentialsId sonarqube:配置在sonarqube208服务中 3、jenkinsfile pipeline {agent anystages {stage(从…

DevOps全面综述:从概念到实践

一、背景与概述 1.1 DevOps的起源与发展 DevOps(Development and Operations的缩写)是软件工程领域中的一种文化和实践方法,旨在促进开发团队与运维团队之间的协作,从而实现更高效、更可靠的软件交付。DevOps起源于敏捷软件开发方…

Mac 使用Docker安装Elasticsearch、Kibana

安装ElasticSearch 通过docker安装es docker pull elasticsearch:8.6.2 在本地创建elasticsearch.yml文件 mkdir /Users/ky/Documents/learn/es/elasticsearch.yml 编辑yml文件内容 http: host: 0.0.0.0 xpack.security.enabled: false xpack.security.enrollment.enabled: t…

阿赵UE引擎C++编程学习笔记——生成Actor

大家好,我是阿赵。   使用Unity引擎的朋友应该都知道,Unity引擎的预设资源叫做Prefab,然后把预设资源生成在场景的命令是:GameObject.Instantiate。UE引擎里面,并没有统一的Prefab类型,而是通过各种蓝图来…

DHCP及FTP

一、1、DHCP动态主机配置协议:通常被应用在大型的局域网络环境中,主要作用是集中地管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。 2、DHCP 的优点&#xff…

数据中心的中台前端风格大屏设计开发

数据中心的中台前端风格大屏设计开发

秋招突击——算法打卡——5/28——复习{Z字形变换、两数之和}——新做:{整数反转、字符串转整数}

文章目录 复习Z字形变换实现代码参考代码 两数之和复习代码 新作整数反转个人实现实现代码 参考做法字符串转换整数个人解法 分析总结 复习 Z字形变换 实现代码 这里使用了他的思想,但是没有用他的代码,虽然已经比上次简洁了,但是还是不够&…

【创业新趋势】萤瓴优选,抓住2024年造富新机遇!

​在当下这个充满变革与机遇的时代,创业者们纷纷寻找着下一个造富的新风口。而2024年,一个备受瞩目的创业新星正在冉冉升起——萤瓴优选。这款短视频变现任务App以其独特的 keJ0277 商业模式和创新理念,正引领着创业新趋势,成为众…

java多线程初探

文章目录 countDownLatchvolatileCASjdk1.6对synchronized的优化自旋锁锁消除锁粗化轻量级锁偏向锁 java AtomicBoolean compareAndSet Demothreadlocalconcurrent queue原子操作是否需要同步copyonwrite容器可重入锁公平与非公平并发编程步骤 countDownLatch 此类位于java.ut…

python入门2

文章目录 前言一、集合与字典1、集合2、字典3、字典内置方法4、内置数据结构总结 二、控制流程1、结构流程概述2、分支结构3、循环结构 总结 前言 本文将介绍Python中的集合与字典以及控制流程。集合是一种无序且不重复的数据类型,它可以用于存储一组元素&#xff…

echarts多X轴, 多Y轴

需要的效果 原始数据 props.monitorData:{"lst_monitor_flow": ["152.68","207.64","103.82","21.21","33.81","40.71","273.80","208.66","104.33","15.80"…

如何在vs code中安装JavaFX

目录 下载JavaFX 配置vs code工程 编写测试代码 下载JavaFX 网站链接:https://openjfx.io 选择如下的版本