Bagaimana untuk Mengendalikan \'Ralat 1329: Tiada Data - Baris Sifar Diambil\' dalam Prosedur Tersimpan MySQL?

Barbara Streisand
Lepaskan: 2024-10-26 14:29:30
asal
902 orang telah melayarinya

How to Handle

Tiada Amaran Data dalam Prosedur Tersimpan: "Ralat 1329: Baris Sifar Diambil, Dipilih atau Diproses"

Dalam pengaturcaraan pangkalan data, prosedur tersimpan sering digunakan untuk merangkum operasi yang kompleks dan memastikan integriti data. Walau bagaimanapun, kadangkala prosedur ini mungkin menghadapi ralat atau menghasilkan amaran yang tidak dijangka. Satu isu biasa ialah mesej "Ralat 1329: Tiada data - sifar baris diambil, dipilih atau diproses".

Amaran ini biasanya muncul apabila prosedur tersimpan tidak mengendalikan kes yang tiada data dikembalikan secara eksplisit. Untuk menyelesaikannya, seseorang mesti mengendalikan keadaan "TIDAK DITEMUI" dengan betul. Dalam MySQL, ini boleh dicapai menggunakan pernyataan CONTINUE HANDLER.

Pertimbangkan prosedur tersimpan testing_proc berikut:

<code class="sql">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</code>
Salin selepas log masuk

Jika prosedur ini berjalan tanpa sebarang data dalam jadual customer_tbl, ia akan mencetuskan amaran "Ralat 1329". Untuk mengelakkan ini, kita boleh menambah pernyataan CONTINUE HANDLER berikut pada penghujung prosedur:

<code class="sql">DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;</code>
Salin selepas log masuk

Pernyataan ini memberitahu MySQL untuk menetapkan pembolehubah yang dilakukan kepada 1 jika tiada baris ditemui. Ini akan menyebabkan gelung kursor terkeluar, menghalang ralat daripada berlaku.

Sebagai alternatif, seseorang juga boleh memintas amaran dengan menambahkan pernyataan "dummy" pada penghujung prosedur yang melibatkan jadual dan berjaya, seperti:

<code class="sql">SELECT name INTO l_name FROM customer_tbl LIMIT 1;</code>
Salin selepas log masuk

Pernyataan ini akan memastikan bahawa baris diambil, mengosongkan amaran.

Dengan mengendalikan keadaan "TIDAK DITEMUI" dengan betul atau menambah kenyataan palsu, seseorang boleh menghapuskan amaran "Ralat 1329" dalam prosedur tersimpan yang tidak mengembalikan sebarang data.

Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan \'Ralat 1329: Tiada Data - Baris Sifar Diambil\' dalam Prosedur Tersimpan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!