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

Apakah kaedah penciptaan dan pelaksanaan fungsi tersuai dalam Mysql

WBOY
Lepaskan: 2023-04-17 16:07:03
ke hadapan
1570 orang telah melayarinya

    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');
    Salin selepas log masuk

    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 ;
    Salin selepas log masuk
    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);
    Salin selepas log masuk
    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!

    Label berkaitan:
    sumber:yisu.com
    Kenyataan Laman Web ini
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
    Tutorial Popular
    Lagi>
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan