Pesan kesalahan dalam hal ini menceritakan bagian terpenting:
Perilaku ini konsisten dengan apa yang didokumentasikan dalam manual MySQL pada prosedur dan fungsi tersimpan:
Anda menetapkan nilai ke @Pn
. Anda variabel menggunakan pernyataan pilih yang mengembalikan hasil dan ini tidak diperbolehkan dalam suatu fungsi. Anda harus menghapus pernyataan ini dari kode Anda. RETURN river
mengembalikan nilai result hasil , tetapi bukan hasil setel .
Saya juga khawatir Anda menggunakan variabel sesi (variabel yang didefinisikan sebagai @variable_name) yang digunakan bersama di seluruh koneksi, jadi kemungkinan beberapa panggilan ke fungsi yang sama pada saat yang sama dalam koneksi dapat mengganggu satu sama lain.
Fungsi yang disimpan hanya seharusnya mengembalikan satu nilai sebagai outputnya dengan return
penyataan. Hal lain dianggap sebagai efek samping. Jika Anda ingin skrip MySQL Anda mengisi banyak variabel, maka Anda harus gunakan prosedur tersimpan, Anda tidak dapat menggunakan fungsi tersimpan.