Rumah >pangkalan data >tutorial mysql >Apakah perbezaan antara prosedur tersimpan mysql dan fungsi tersimpan?
Perbezaan: 1. Fungsi tersimpan mempunyai banyak sekatan, manakala prosedur tersimpan mempunyai sekatan yang agak sedikit 2. Fungsi tersimpan akan mengembalikan satu dan hanya satu nilai hasil kepada pemanggil, manakala prosedur tersimpan akan mengembalikan satu atau Berbilang set hasil; ; 3. Terdapat tiga jenis parameter untuk prosedur tersimpan, dan hanya satu jenis parameter untuk fungsi tersimpan.
Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.
Apakah itu prosedur tersimpan?
Prosedur tersimpan ialah satu set pernyataan SQL yang digunakan untuk melengkapkan fungsi tertentu dalam sistem pangkalan data yang besar Ia disimpan dalam pangkalan data selepas disusun buat kali pertama tidak perlu disusun semula apabila dipanggil semula Pengguna melaksanakan prosedur tersimpan dengan menyatakan nama dan parameternya (jika prosedur tersimpan mempunyai parameter). Prosedur tersimpan adalah objek penting dalam pangkalan data, dan mana-mana aplikasi pangkalan data yang direka bentuk dengan baik harus menggunakan prosedur tersimpan.
Kelebihan:
(1) Guna Semula: Prosedur tersimpan boleh digunakan semula, yang boleh mengurangkan beban kerja pembangun.
(2) Meningkatkan kecekapan: Prosedur tersimpan akan disusun pada kali pertama ia digunakan Setelah disusun sekali, ia tidak perlu disusun semula, yang meningkatkan kecekapan.
(3) Kurangkan trafik rangkaian: Prosedur tersimpan terletak pada pelayan Apabila membuat panggilan, anda hanya perlu menghantar nama dan parameter prosedur tersimpan, sekali gus mengurangkan jumlah data yang dihantar melalui rangkaian.
(4) Keselamatan: Prosedur tersimpan berparameter boleh menghalang suntikan SQL dan kebenaran Berikan, Tolak dan Batal boleh digunakan pada prosedur tersimpan.
Kelemahan:
(1) Masalah nyahpepijat
(2) Mudah alih yang lemah
(3) Kebolehselenggaraan yang lemah
Kod:
CREATE DEFINER=`root`@`%` PROCEDURE `getName`(IN `uid` int,OUT my_uname VARCHAR(255)) BEGIN #Routine body goes here... select admin_name into my_uname from admin_user where id=uid; select my_uname; END
Apakah fungsi tersimpan?
Fungsi tersimpan ialah satu set prosedur tersimpan, dengan nama fungsi, parameter dan mengembalikan set hasil. Fungsi yang disimpan adalah serupa dalam struktur dengan prosedur yang disimpan, tetapi mesti mempunyai klausa pemulangan untuk mengembalikan hasil.
Kod:
CREATE DEFINER=`root`@`%` FUNCTION `queryChildrenAreaInfo`(areaId INT) RETURNS varchar(4000) CHARSET utf8 BEGIN DECLARE sTemp VARCHAR(4000); DECLARE sTempChd VARCHAR(4000); SET sTemp='$'; SET sTempChd = CAST(areaId AS CHAR); WHILE sTempChd IS NOT NULL DO SET sTemp= CONCAT(sTemp,',',sTempChd); SELECT GROUP_CONCAT(id) INTO sTempChd FROM personal_dept WHERE FIND_IN_SET(dept_parentId,sTempChd)>0; END WHILE; RETURN sTemp; END
Perbezaan antara prosedur tersimpan dan fungsi tersimpan
1 🎜>
Prosedur tersimpan dan fungsi tersimpan secara kolektif dipanggil rutin tersimpan. Sintaks kedua-duanya sangat serupa, tetapi mereka mempunyai kandungan yang berbeza. Terdapat banyak sekatan pada fungsi storan Sebagai contoh, jadual sementara tidak boleh digunakan, hanya pembolehubah jadual boleh digunakan. Terdapat juga beberapa fungsi yang tidak tersedia dan sebagainya. Sekatan ke atas prosedur tersimpan agak sedikit, dan fungsi yang akan dilaksanakan adalah lebih kompleks.2. Perbezaan dalam nilai pulangan
Fungsi storan akan mengembalikan satu dan hanya satu nilai hasil kepada pemanggil. Prosedur tersimpan akan mengembalikan satu atau lebih set hasil (fungsi tidak boleh melakukan ini), atau hanya untuk mencapai beberapa kesan atau tindakan tanpa mengembalikan hasil.3. Kaedah panggilan yang berbeza Fungsi yang disimpan dibenamkan dalam sql dan boleh dipanggil dalam pilih, sama seperti fungsi terbina dalam, seperti cos(), sin( ).
4 Perbezaan dalam parameter
Jenis parameter fungsi yang disimpan adalah serupa dengan parameter IN Terdapat tiga jenis parameter prosedur tersimpan: IN parameter, Parameter OUT, parameter INOUTin: Data hanya dihantar dari luar untuk kegunaan dalaman (pemindahan nilai), yang boleh menjadi nilai berangka atau pembolehubah keluar : hanya dibenarkan untuk kegunaan dalaman proses (tidak digunakan) Data luaran), untuk kegunaan luaran (pemindahan rujukan: data luaran akan dikosongkan terlebih dahulu sebelum memasuki dalaman), hanya boleh menjadi pembolehubah keluar: luaran boleh digunakan secara dalaman, dan diubah suai secara dalaman juga boleh diberikan Untuk kegunaan luaran, pemindahan rujukan biasa hanya boleh melepasi pembolehubah.
tutorial video mysql]
Atas ialah kandungan terperinci Apakah perbezaan antara prosedur tersimpan mysql dan fungsi tersimpan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!