Masalah dengan ini:
DELIMITER $$
DROP PROCEDURE IF EXISTS my_test;
CREATE PROCEDURE my_test() ...
adalah MySQL tidak melihat titik koma di akhir DROP PROCEDURE
baris pernyataan sebagai akhir pernyataan. Ini karena baris sebelumnya memberi tahu MySQL bahwa terminator pernyataan adalah sesuatu selain titik koma. Anda memberi tahu MySQL bahwa pernyataan akan diakhiri dengan tanda dua dolar. Jadi MySQL membaca DROP PROCEDURE
baris, mencari terminator pernyataan. Dan seluruh gumpalan yang dibacanya BUKAN pernyataan MySQL yang valid, itu menghasilkan kesalahan sintaksis.
Cara mengatasinya:pindahkan DROP PROCEDURE
baris sebelum DELIMITER $$
garis; atau hentikan DROP PROCEDURE
pernyataan dengan pembatas yang ditentukan daripada titik koma.
Masalah kedua yang Anda laporkan adalah kesalahan sintaks. Itu terjadi karena MySQL tidak mengenali IF
sebagai awal dari pernyataan SQL yang valid.
IF
pernyataan valid hanya dalam konteks program tersimpan MySQL (misalnya, dalam CREATE PROCEDURE
pernyataan.)
Cara mengatasinya:Gunakan IF
pernyataan hanya dalam konteks program tersimpan MySQL.
Masalah ketiga yang Anda laporkan juga merupakan kesalahan sintaks. Itu terjadi karena Anda tidak memiliki sintaks yang valid untuk SET
penyataan; Sintaks MySQL untuk SET
pernyataan untuk menetapkan nilai ke variabel pengguna adalah:
SET @uservar = expr
MySQL mengharapkan ekspresi setelah tanda sama dengan. MySQL tidak mengharapkan pernyataan SQL.
Untuk menetapkan nilai ke variabel pengguna sebagai hasil dari SELECT
pernyataan, lakukan tugas dalam pernyataan SELECT, misalnya:
SELECT @Count := Count(id) FROM `tbl_object_users` WHERE `username`='jp2code'
Perhatikan bahwa operator penugasan di dalam SELECT
pernyataannya adalah :=
(titik dua sama dengan), bukan hanya =
.