」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何處理 MySQL 預存程序中的「錯誤 1329:無資料 - 取得零行」?

如何處理 MySQL 預存程序中的「錯誤 1329:無資料 - 取得零行」?

發佈於2024-11-07
瀏覽:847

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」警告。

最新教學 更多>
  • 模板文字可以真正重複使用嗎?
    模板文字可以真正重複使用嗎?
    模板文字:復興重用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 伺服器? FHIR...
    程式設計 發佈於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
  • PHP中參數替換後如何用PDO確定最終的SQL查詢?
    PHP中參數替換後如何用PDO確定最終的SQL查詢?
    透過PDO 在PHP 中確定最終的SQL 參數化查詢對於存取MySQL 資料庫時在PHP 中透過PDO 進行參數化查詢,獲得最終結果標記替換後的SQL 查詢可能具有挑戰性。 PHP 環境不會保留完整的查詢,因為它將標記的查詢與參數分開傳送到資料庫。 答案 1:如 Ben James 指出的,在 PH...
    程式設計 發佈於2024-11-07
  • 如何在循環中建立動態變​​數名稱:數組方法
    如何在循環中建立動態變​​數名稱:數組方法
    循環中的動態變數名稱在嘗試使用標記 i 在循環中建立動態變​​數名稱時,遇到語法錯誤。為了解決這個問題,讓我們探索一種使用陣列的替代方法。 陣列標記被初始化為空。在循環內,數組的每個元素都被分配一個與第 i 次迭代相對應的值。 var markers = []; for (var i = 0; i ...
    程式設計 發佈於2024-11-07
  • 為什麼 `localhost` 和 `127.0.0.1` 在 PHP 的 `mysql_connect()` 中表現不同?
    為什麼 `localhost` 和 `127.0.0.1` 在 PHP 的 `mysql_connect()` 中表現不同?
    為什麼 localhost 和 127.0.0.1 在 PHP 的 mysql_connect() 中表現不同? 在 mysql_connect() 中使用 localhost 會使連線比使用 127.0.0.1 更快? 在 mysql_connect() 中使用 localhost 和 127.0...
    程式設計 發佈於2024-11-07
  • 城市技術趨勢開發人員指南
    城市技術趨勢開發人員指南
    想像一下,在一個地方,廢物可以轉化為資源,交通順暢,建築物可以自己產生能源。由於科技的進步,這個未來願景正開始成為現實。 我們將在這篇文章中探討城市科技的最新發展,並為開發商如何為更有效率和永續的未來做出貢獻提供實用建議。 好奇城市如何像一個活的有機體一樣思考、呼吸和反應?發現物聯網在智慧城市...
    程式設計 發佈於2024-11-07
  • 如何在Java 8中實作嵌套物件的多層分組?
    如何在Java 8中實作嵌套物件的多層分組?
    Java 8 中的多層分組使用Nested GroupBy本文探討了在處理嵌套類別時如何實現多層分組Java 8 。具體來說,目標是按 key1 欄位對項目進行分組,然後對於每組項目,進一步按 key2 欄位對它們進行分組。最終,輸出應該是一個以 key1 作為外鍵的映射,以及一個 key2 到子項...
    程式設計 發佈於2024-11-07

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3