Rumah > Artikel > pangkalan data > Apakah kaedah penciptaan dan pelaksanaan fungsi tersuai dalam Mysql
Andaikan jadual pelajar mengandungi dua medan, id dan nama, dan cipta fungsi fungsi adalah berdasarkan nama carian id
create table students(id int,name varchar(100)); insert into students(id,name) values(1,'annie'),(2,'bell'),(3,'danny');
DELIMITER // create function find_student(id int) returns varchar(100) READS SQL DATA begin declare sname varchar(100) default ''; select students.name into sname from students where students.id=id; return sname; end // DELIMITER ;1) Gunakan DELIMITER// untuk mengubah suai pembatas
Simbol akhir pernyataan lalai MySQL ialah koma bertitik Apabila MySQL menemui koma bertitik, ia akan melaksanakan penyataan semasa secara automatik. Oleh kerana definisi fungsi mengandungi berbilang penyataan sql, gunakan DELIMITER //Tetapkan pemisah kepada // dahulu, dan kemudian tukar pemisah kembali kepada koma bertitik selepas penyataan penciptaan fungsi selesai.
2) MEMBACA DATA SQLSaya tidak menulis ayat ini sebelum ini, tetapi mysql melaporkan ralat semasa menciptanya, menyebabkan Kod Ralat: 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)
Saya menyemak dalam talian, yang bermaksud bahawa fungsi mysql tidak diisytiharkan. >2 NO SQL Tiada pernyataan SQL, dan sudah tentu ia tidak akan mengubah suai data
3 MEMBACA DATA SQL Ia hanya membaca data, dan sudah tentu ia tidak akan mengubah suai data
4 MENGUBAH SUAI DATA SQL Untuk mengubah suai data
5 MENGANDUNGI SQL mengandungi pernyataan SQL
Jadi saya Menambah READS SQL DATA
takrif pembolehubah: Saya menggunakan declare sname varchar( 100) lalai ‘ ’;Nama pembolehubah tempatan ditakrifkan,
Anda juga boleh terus menggunakan pernyataan set untuk menetapkan nilai, seperti set sname=‘test’3. pilih nama fungsi (nilai parameter);
Masalah kegagalan penciptaan fungsi tersuai MySQLKes
Pada masa ini dalam projek, ralat berlaku semasa melaksanakan fungsi untuk mencipta mysql, Mesej ralat fungsi penciptaan mysql adalah seperti berikut:select find_student(3);di com.mys .jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3976)
di com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:745)
... 35 lagiIni kerana parameter keselamatan tidak dihidupkan . Nilai lalai log_bin_trust_function_creators ialah 0, yang tidak membenarkan penyegerakan fungsi Jika anda menghidupkan parameter ini, penciptaan akan berjaya.
Semak sama ada ia didayakan:
dihidupkan, ini bermakna ia didayakan
boleh ditetapkan melalui arahan ini, tetapi ia akan menjadi tidak sah selepas MySQL dimulakan semula.
Semua langkah terakhir adalah untuk mengkonfigurasi log_bin_trust_function_creators=1 dalam [mysqld] fail konfigurasi /etc/my.cnf dengan mengubah suai fail konfigurasi pangkalan data MySQL
Mulakan semula MySQL selepas pengubahsuaian.
Atas ialah kandungan terperinci Apakah kaedah penciptaan dan pelaksanaan fungsi tersuai dalam Mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!