mengerjakan apa yang ditulis Code-Monk, pertimbangkan hal berikut:
drop procedure if exists uspK;
DELIMITER $$
create procedure uspK ()
BEGIN
drop temporary table if exists temp; -- could be some other random structure residue
create temporary table temp
SELECT aID, bID
FROM tags
WHERE placeID = "abc" AND tagID = "def";
-- use the temp table somehow
-- ...
-- ...
-- ...
drop temporary table temp; -- otherwise it survives the stored proc call
END
$$ -- signify end of block
DELIMITER ; -- reset to default delimiter
Prosedur Pengujian Tersimpan
call uspK(); -- test it, no warnings on edge conditions
Apa yang tidak boleh dilakukan
Seseorang akan tidak menemukan banyak keberuntungan dengan berikut. Jika Anda berpikir demikian, jalankan beberapa kali;
drop procedure if exists uspK;
DELIMITER $$
create procedure uspK ()
BEGIN
-- drop temporary table if exists temp;
create temporary table if not exists temp
SELECT aID, bID
FROM tags
WHERE placeID = "abc" AND tagID = "def";
-- use the temp table somehow
-- ...
-- ...
-- ...
-- drop temporary table temp; -- otherwise it survives the stored proc call
END
$$ -- signify end of block
DELIMITER ; -- reset to default delimiter
karena create temporary table if not exists temp
rapuh
Komentar Umum
Seseorang tidak boleh memulai menulis procs yang tersimpan sampai agak fasih pada topik sederhana DELIMITERS. Tulis tentang mereka di bagian di sini disebut Pembatas . Hanya berharap untuk mencegah Anda membuang waktu yang tidak perlu untuk hal sederhana seperti itu, daripada membuang banyak waktu debug.
Juga, di sini dalam pertanyaan Anda, serta dalam referensi itu, ingatlah bahwa pembuatan tabel adalah DDL yang bisa memiliki persentase besar dari keseluruhan profil (kinerja). Ini memperlambat proc dibandingkan menggunakan tabel yang sudah ada sebelumnya. Orang mungkin berpikir panggilan itu instan, tetapi tidak. Dengan demikian, untuk kinerja, menggunakan tabel yang sudah ada sebelumnya dengan hasil yang dimasukkan ke dalam rowId tersegmentasi jauh lebih cepat daripada menahan overhead DDL.