Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyoal Jadual Dirujuk Secara Dinamik dalam Fungsi Prosedur Tersimpan?

Bagaimana untuk Menyoal Jadual Dirujuk Secara Dinamik dalam Fungsi Prosedur Tersimpan?

Susan Sarandon
Susan Sarandonasal
2024-11-06 09:28:02898semak imbas

How to Query Dynamically Referenced Tables in Stored Procedure Functions?

Jadual Rujukan Secara Dinamik dalam Fungsi Prosedur Tersimpan

Apabila mencipta fungsi prosedur tersimpan, anda mungkin menghadapi keperluan untuk menentukan nama jadual secara dinamik untuk bertanya. Cabaran ini timbul kerana pembolehubah tidak boleh digunakan secara langsung dalam klausa FROM pernyataan SQL dalam fungsi disebabkan oleh sekatan pada SQL dinamik.

Pernyataan Disediakan sebagai Penyelesaian

Satu penyelesaian melibatkan penggunaan pernyataan yang disediakan. Dalam prosedur tersimpan, pernyataan yang disediakan boleh digunakan untuk membina pertanyaan SQL dinamik. Walau bagaimanapun, pendekatan ini tidak sesuai untuk fungsi kerana ia melarang penggunaan pernyataan yang disediakan.

Prosedur Tersimpan dengan Parameter OUT

Untuk menangani had ini, kaedah alternatif melibatkan mencipta prosedur tersimpan dengan parameter OUT yang mengembalikan nilai yang dikehendaki. Berikut ialah contoh prosedur tersimpan sedemikian:

CREATE PROCEDURE getName
 (IN tableName VARCHAR(50), IN myId INT(11), OUT myName VARCHAR(50))
BEGIN
  SET @GetName = CONCAT('SELECT name INTO @var1 FROM ', tableName, ' WHERE>

Contoh Penggunaan

Untuk menggunakan prosedur tersimpan ini, anda akan menentukan nilai pembolehubah seperti berikut:

SET @tableName = 'tbl';
SET @myId = 1005;
SET @name = NULL;
CALL getName(@tableName, @myId, @name);
SELECT @name;

Teknik ini dengan berkesan membolehkan anda menanyakan nama jadual dinamik dalam fungsi prosedur tersimpan dengan memanfaatkan prosedur tersimpan dengan parameter OUT.

Atas ialah kandungan terperinci Bagaimana untuk Menyoal Jadual Dirujuk Secara Dinamik dalam Fungsi Prosedur Tersimpan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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