Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menggunakan SQL Dinamik dalam Prosedur Tersimpan MySQL?

Bagaimanakah Saya Boleh Menggunakan SQL Dinamik dalam Prosedur Tersimpan MySQL?

Mary-Kate Olsen
Lepaskan: 2024-12-21 17:50:09
asal
478 orang telah melayarinya

How Can I Use Dynamic SQL in MySQL Stored Procedures?

Menggunakan Dynamic SQL dalam MySQL Stored Procedures

Dalam MySQL versi 5.0.13 dan kemudian, SQL dinamik boleh dilaksanakan dalam prosedur tersimpan.

Membina Pernyataan SQL Dinamik:

Untuk membina dinamik Penyataan SQL, fungsi CONCAT() digunakan untuk menggabungkan rentetan dan membuat pernyataan SQL secara dinamik. Berikut ialah contoh:

SET @s = CONCAT('SELECT ',col,' FROM ',tbl );
Salin selepas log masuk

Dalam contoh di atas, @s akan mengandungi pernyataan SQL dinamik:

SELECT col FROM tbl
Salin selepas log masuk

Menyedia dan Melaksanakan Pernyataan Dinamik:

Setelah penyataan SQL dinamik dibina, ia perlu disediakan dan dilaksanakan:

PREPARE stmt FROM @s;
EXECUTE stmt;
Salin selepas log masuk

Mengagihkan Penyata Disediakan:

Selepas pelaksanaan, pernyataan yang disediakan mesti diagihkan untuk mengeluarkan sumber:

DEALLOCATE PREPARE stmt;
Salin selepas log masuk

Had:

Dinamik SQL disokong dalam prosedur tersimpan, tetapi bukan dalam fungsi atau pencetus.

Contoh:

Prosedur tersimpan berikut menunjukkan SQL dinamik:

delimiter // 
CREATE PROCEDURE dynamic(IN tbl CHAR(64), IN col CHAR(64))
BEGIN
    SET @s = CONCAT('SELECT ',col,' FROM ',tbl );
    PREPARE stmt FROM @s;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
END
//
delimiter ;
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan SQL Dinamik 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