Rumah  >  Artikel  >  pangkalan data  >  Apakah kaedah penciptaan dan pelaksanaan fungsi tersuai dalam Mysql

Apakah kaedah penciptaan dan pelaksanaan fungsi tersuai dalam Mysql

WBOY
WBOYke hadapan
2023-04-17 16:07:031520semak imbas

    Penciptaan dan pelaksanaan fungsi tersuai Mysql

    Andaikan jadual pelajar mengandungi dua medan, id dan nama, dan cipta fungsi fungsi adalah berdasarkan nama carian id

    1 Cipta jadual dan masukkan data

    create table students(id int,name varchar(100));
    insert into students(id,name) values(1,'annie'),(2,'bell'),(3,'danny');

    2. >

    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 SQL

    Saya 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

    • 3) Gunakan pembolehubah tempatan
    • takrif pembolehubah: Saya menggunakan declare sname varchar( 100) lalai ‘ ’;Nama pembolehubah tempatan ditakrifkan,

    • penggunaan pembolehubah:

    • Anda boleh menggunakan students.name pilih ke dalam sname daripada pelajar tempat pelajar. id=id; untuk menetapkan nilai kepada pembolehubah

    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 MySQL

    Kes

    Pada masa ini dalam projek, ralat berlaku semasa melaksanakan fungsi untuk mencipta mysql,

    Mesej ralat fungsi penciptaan mysql adalah seperti berikut:

    Disebabkan oleh: java.sql.SQLException: 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)

    di com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965)
    select find_student(3);
    di com.mys .jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3976)

    di com.mysql.jdbc. :871)

    di com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:2373 )

    di com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2739>🎜) .jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2482)

    di com.mysql.jdbc. :845)

    di com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:745)

    ... 35 lagi

    Ini 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!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam