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

Susan Sarandon
Lepaskan: 2024-11-06 09:28:02
asal
788 orang telah melayarinya

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>
Salin selepas log masuk

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;
Salin selepas log masuk

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!

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!