DELIMITER $$ DROP FUNCTION IF EXISTS genPerson$$ CREATE FUNCTION genPerson(name varchar(20)) RETURNS varchar(50) BEGIN DECLARE str VARCHAR(50) DEFAULT ''; SET @tableName=name; SET str=CONCAT('create table ', @tableName,'(id int, name varchar(20));'); return str; END $$ DELIMITER ;
Setakat sql dalam gambar di atas adalah berkenaan
(1) DELIMITER $ $ mentakrifkan penamat. Penamat lalai MySQL ialah koma bertitik, tetapi koma bertitik boleh digunakan dalam badan fungsi. Untuk mengelakkan konflik, penamat tambahan perlu ditakrifkan.
(2) GUGURKAN FUNGSI JIKA WUJUD genPerson$$ Jika fungsi genPerson sudah wujud, padamkannya.
(3) CREATE FUNCTION mencipta fungsi genPerson Parameter fungsi ialah nama dan nilai pulangan ialah varchar(50).
(4) Badan fungsi diletakkan di antara BEGIN dan END.
(5) DECLARE mengisytiharkan pembolehubah, jenis str ialah varchar(50), dan nilai lalainya kosong.
(6) CONCAT menggabungkan berbilang rentetan.
(7) RETURN mengembalikan str rentetan yang disambung.
Seperti yang dapat dilihat daripada hasil pelaksanaan
dalam Apabila mencipta fungsi dalam mysql,
kod ralat dilaporkan: 1418
Fungsi ini tidak mempunyai DETERMINISTIC, NO SQL, atau READS SQL DATA dalam pengisytiharannya dan pengelogan binari didayakan (anda *mungkin* mahu menggunakan pembolehubah log_bin_trust_function_creators yang kurang selamat) Ini bermakna fungsi cipta tidak dihidupkan.
1 Periksa sama ada fungsi cipta dihidupkan
show variables like '%func%'; ------------------------------------------- +---------------------------------+-------+ | Variable_name | Value | +---------------------------------+-------+ | log_bin_trust_function_creators | OFF | +---------------------------------+-------
2 Hidupkan
SET GLOBAL log_bin_trust_function_creators = 1;
3
Atas ialah kandungan terperinci Bagaimana untuk mencipta fungsi dalam Mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!