”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何处理 MySQL 存储过程中的“错误 1329:无数据 - 获取零行”?

如何处理 MySQL 存储过程中的“错误 1329:无数据 - 获取零行”?

发布于2024-11-07
浏览:395

How to Handle \

存储过程中无数据警告:“错误 1329:获取、选择或处理零行”

在数据库编程中,存储过程通常用于封装复杂的操作并确保数据完整性。然而,有时这些过程可能会遇到错误或产生意外的警告。一个常见问题是“错误 1329:无数据 - 提取、选择或处理零行”消息。

当存储过程未显式处理没有返回数据的情况时,通常会出现此警告。为了解决这个问题,必须正确处理“NOT FOUND”情况。在 MySQL 中,这可以使用 CONTINUE HANDLER 语句来实现。

考虑以下testing_proc存储过程:

CREATE PROCEDURE `testing_proc`()
READS SQL DATA
BEGIN
    DECLARE done INT DEFAULT 0;
    DECLARE l_name VARCHAR(20);
    DECLARE my_cur CURSOR FOR
        SELECT name FROM customer_tbl;
    OPEN my_cur;
        my_cur_loop:
        LOOP FETCH my_cur INTO l_name;
            IF done = 1 THEN
                LEAVE my_cur_loop;
            END IF;
            INSERT INTO names_tbl VALUES(l_name);
        END LOOP my_cur_loop;
    CLOSE my_cur;
END

如果此过程在 customer_tbl 表中没有任何数据的情况下运行,则会触发“错误 1329”警告。为了防止这种情况,我们可以在过程末尾添加以下 CONTINUE HANDLER 语句:

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

该语句告诉 MySQL如果未找到行,则将 did 变量设置为 1。这将导致游标循环退出,从而防止错误发生。

或者,也可以通过在涉及表的过程末尾添加一条“虚拟”语句来绕过警告,并且会成功,如:

SELECT name INTO l_name FROM customer_tbl LIMIT 1;

该语句将确保获取一行,清除警告。

通过正确处理通过“NOT FOUND”条件或添加虚拟语句,可以消除不返回任何数据的存储过程中的“Error 1329”警告。

最新教程 更多>
  • 如何在 Java 中转义特殊字符以实现精确的正则表达式匹配?
    如何在 Java 中转义特殊字符以实现精确的正则表达式匹配?
    转义特殊字符以实现最佳正则表达式匹配使用正则表达式 (regex) 匹配文本时,转义某些特殊字符至关重要,以确保它们被解释为文字而不是元字符。在Java中,必须转义的特殊字符包括:。 [ ] { } ( ) \ < > * - = ! ? ^ $ |但是,需要注意一些例外情况:方括号 ([]) 内只...
    编程 发布于2024-11-07
  • 用 Java 构建旋转排序数组搜索:了解枢轴搜索和二分搜索
    用 Java 构建旋转排序数组搜索:了解枢轴搜索和二分搜索
    什么是旋转排序数组? 考虑一个排序数组,例如: [1, 2, 3, 4, 5, 6] 现在,如果这个数组在某个枢轴处旋转,比如在索引 3 处,它将变成: [4, 5, 6, 1, 2, 3] 请注意,数组仍然是排序的,但它被分为两部分。我们的目标是有效地在此类数组中搜索目标值。 ...
    编程 发布于2024-11-07
  • 在 � 中学习 Three.js
    在 � 中学习 Three.js
    I had the chance to dive into some web development where I wanted to add interactive 3D elements that could move and react to certain triggers. Natura...
    编程 发布于2024-11-07
  • 网站时间数据集
    网站时间数据集
    您好,我在kaggle上发现了一个网站使用时间的数据集,所以我想找到访问页面数与网站总时间之间的比率。 您可以在我的github中找到数据集和代码:https://github.com/victordalet/Kaggle_analysis/tree/feat/website_traffic ...
    编程 发布于2024-11-07
  • 简单异常示例
    简单异常示例
    该示例展示了如何监控和捕获异常。 尝试访问数组边界之外的索引会生成 ArrayIndexOutOfBoundsException。 程序故意引发此异常并捕获它。 要监视异常的代码放在 try 块内。 当发生异常时,抛出异常并被catch块捕获,结束try块。 控制权不是“叫”来捕捉的,而是自动转移...
    编程 发布于2024-11-07
  • 模板文字可以真正重用吗?
    模板文字可以真正重用吗?
    模板文字:复兴重用ES6 中的模板文字经常被吹捧为强大的文本操作工具,但一个棘手的问题仍然存在:它们真的可以重用吗?无法实现的期望乍一看,模板文字似乎只在声明时承诺动态替换。这就引出了一个问题:什么是保持静态的模板?打破循环与流行的看法相反,模板文字可以使用函数通过运行时替换来重新焕发活力构造函数作...
    编程 发布于2024-11-07
  • 在 Java 中使用 Fisher-Yates 算法对数组进行洗牌
    在 Java 中使用 Fisher-Yates 算法对数组进行洗牌
    介绍 在计算机科学领域,对元素数组或列表进行洗牌是一种常见的操作,可用于各种应用程序,从随机化游戏结果到分发牌组中的纸牌。为此目的最有效的算法之一是 Fisher-Yates Shuffle,也称为 Knuth Shuffle。该算法确保数组的每个排列都有相同的可能性,这使其成为创...
    编程 发布于2024-11-07
  • 我作为全栈开发人员的旅程:与 MERN Stack 一起成长的一年
    我作为全栈开发人员的旅程:与 MERN Stack 一起成长的一年
    你好!我是 Shivaji Zirpe,一位充满热情的全栈开发人员,专门研究 MERN 堆栈。在过去的一年里,我深入研究了 Web 开发领域,广泛使用了 React、Node.js、MongoDB 等。在这篇文章中,我想分享我的旅程、经历以及我作为开发人员的成长过程。 ?我的经历一览...
    编程 发布于2024-11-07
  • 什么是 FHIR?
    什么是 FHIR?
    介绍 与 fhir 相关的存储库列表 - Awesome-fhir 快速医疗保健互操作性资源 FHIR 服务器是一款强大的工具,彻底改变了医疗保健行业。 它充当访问和交换关键医疗数据的网关,实现不同系统和组织之间的无缝互操作性。 什么是 FHIR 服务器? FHI...
    编程 发布于2024-11-07
  • 为什么常量引用可以延长 C++ 中临时变量的生命周期?
    为什么常量引用可以延长 C++ 中临时变量的生命周期?
    通过常量引用扩展右值生命周期在 C 中,常量引用不仅充当不可变别名,还可以延长临时变量的生命周期。为什么 C 委员会决定实现此行为?此功能的一个基本原理是隐藏类和函数的实现细节。考虑一个可以返回行向量或列向量的矩阵类。为了优化性能,类可以选择根据其行优先或列优先组织返回对内部值的引用。通过要求客户端...
    编程 发布于2024-11-07
  • 如何在 Go 中将切片作为可变参数传递?
    如何在 Go 中将切片作为可变参数传递?
    将解压的切片作为可变参数传递在 Go 中,可变参数函数接受不定数量的特定类型的参数。将切片的切片传递给此类函数时,了解所涉及的类型转换和解包机制至关重要。如果切片包含与可变参数参数类型相同的元素,则可以在不使用切片的情况下传递切片拆包。然而,如果切片中包含多种类型的混合或切片中包含切片,则情况会变得...
    编程 发布于2024-11-07
  • 使用 TypeScript 和语义版本控制创建并发布 npm 库
    使用 TypeScript 和语义版本控制创建并发布 npm 库
    ?编写并发布最少的代码 要在 npm 上发布库,您需要: 一个npm 帐户;您可以在这里注册。 您的代码作为一个项目;即,您的代码目录中有一个 package.json,其中指定了名称和版本。请注意,您可以通过以下方式生成此文件: npm init 项目中的index.js。请记住...
    编程 发布于2024-11-07
  • 如何将包含的 PHP 脚本的值返回到主脚本?
    如何将包含的 PHP 脚本的值返回到主脚本?
    从包含的 PHP 脚本返回在 PHP 中,return() 函数通常用于退出脚本或函数。但是,它不能用于从包含的脚本返回到主脚本。要从包含的脚本返回并恢复主脚本中的执行,请考虑使用以下技术: 1.使用输出缓冲:在包含的脚本内,使用 ob_start() 将要返回的输出存储在变量中。然后,在主脚本中,...
    编程 发布于2024-11-07
  • samwise-CLI:开源 Terraform 模块依赖性跟踪器
    samwise-CLI:开源 Terraform 模块依赖性跟踪器
    地形 Terraform 是一种用 Hashicorp 配置语言 (HCL) 编写的基础设施即代码 (IaC) 工具。本文假设读者已经使用过 Terraform 并了解模块的工作原理。 在 Terraform 中编码的每个人都创建了自己的模块,或者至少使用了其他人的模块。 ...
    编程 发布于2024-11-07
  • CSS 鲜为人知但有用的功能
    CSS 鲜为人知但有用的功能
    CSS 有一些鲜为人知但有用的功能。我们将研究其中的一些。 1. CSS的scroll-snap-type属性和scroll-snap-stop属性 滚动快速停止 当为父元素下的每个子元素设置此属性时,当您快速滚动屏幕时,使用触控板或触摸屏快速滚动时将阻止下一个元素通...
    编程 发布于2024-11-07

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3