Bolehkah Parameter Digabungkan ke dalam Paparan MySQL?
Pertanyaan awal cuba mencipta paparan dengan parameter, tetapi MySQL melarangnya. Penyelesaian yang dibentangkan melibatkan mencipta fungsi untuk mendapatkan semula nilai parameter, kemudian memasukkannya ke dalam definisi paparan. Walau bagaimanapun, pendekatan ini dianggap tidak memuaskan kerana kerumitan dan kekurangan keanggunannya.
Matlamat utama adalah untuk mencipta paparan di mana parameter boleh digunakan secara langsung, memudahkan pengumpulan dan penapisan data. Pertimbangkan pandangan MergedDenialsViewHelper dan MergedDenials. Untuk memaparkan penafian bagi pengguna dan ciri tertentu dalam tempoh masa yang ditetapkan, parameter digunakan:
SET @DenialMergingTime := 5; SELECT GroupTime, FeatureId, UserHostId, MultiplicitySum FROM MergedDenials WHERE UserHostId IN (1, 2) AND FeatureId IN (3, 4);
Kaedah ini, walaupun berkesan, bermasalah kerana sifatnya yang berbelit-belit. Pendekatan alternatif wujud: mencipta fungsi untuk mengembalikan nilai parameter yang diingini.
create function p1() returns INTEGER DETERMINISTIC NO SQL return @p1;
Seterusnya, paparan boleh dibuat dengan fungsi yang digabungkan:
create view h_parm as select * from sw_hardware_big where unit_id = p1() ;
Dengan paparan ini di tempatnya , parameter boleh digunakan terus:
select s.* from (select @p1:=12 p) parm , h_parm s;
Penyelesaian ini menghapuskan keperluan untuk penyelesaian sebelumnya, memudahkan keseluruhan proses dan mempertingkatkan kebolehbacaan kod.
Atas ialah kandungan terperinci Bolehkah MySQL Views Menerima Parameter untuk Penapisan Data Dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!