Pemilihan Jadual Dinamik Menggunakan Pembolehubah dalam Prosedur Tersimpan MySQL
Untuk menggunakan prosedur tersimpan dalam MySQL untuk memilih data daripada pelbagai jadual, nama jadual mesti diluluskan sebagai parameter. Walau bagaimanapun, menghadapi masalah semasa mencuba ini boleh mengecewakan.
Mari kita atasi contoh yang diberikan apabila kod berikut tidak berfungsi seperti yang diharapkan:
CREATE PROCEDURE `usp_SelectFromTables`( IN TableName varchar(100) ) BEGIN SELECT * FROM @TableName; END
Ralat yang dihadapi semasa cuba melaksanakan ini kod ialah TableName tidak wujud. Ini kerana pembolehubah @TableName tidak diselesaikan dengan betul. Untuk membetulkan isu ini, SQL dinamik digunakan.
SQL Dinamik membenarkan pelaksanaan pernyataan SQL yang dibina pada masa jalan, menjadikannya sesuai untuk situasi seperti ini. Berikut ialah versi kod yang diperbetulkan menggunakan SQL dinamik:
CREATE PROCEDURE `usp_SelectFromTables`( IN TableName varchar(100) ) BEGIN SET @sql_text = CONCAT('SELECT * FROM ', TableName); PREPARE stmt FROM @sql_text; EXECUTE stmt; DEALLOCATE PREPARE stmt; END
Dalam kod ini, fungsi CONCAT() digunakan untuk membina pernyataan SQL berdasarkan nama jadual yang disediakan. Kenyataan PREPARE menyediakan SQL dinamik untuk pelaksanaan, dan pernyataan EXECUTE melaksanakannya. Akhir sekali, penyata DEALLOCATE PREPARE menyamakan kedudukan kenyataan yang disediakan, membebaskan sumber.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memilih Data Secara Dinamik daripada Jadual Berbeza Menggunakan Prosedur Tersimpan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!