Problem z tym:
DELIMITER $$
DROP PROCEDURE IF EXISTS my_test;
CREATE PROCEDURE my_test() ...
jest to, że MySQL nie widzi średnika na końcu DROP PROCEDURE wiersz instrukcji jako koniec instrukcji. Dzieje się tak, ponieważ poprzednia linia informowała MySQL, że terminator instrukcji jest czymś innym niż średnikiem. Powiedziałeś MySQL, że instrukcje zostaną zakończone dwoma znakami dolara. Więc MySQL czyta DROP PROCEDURE wiersz, szukając terminatora instrukcji. A cały blob, który czyta, NIE jest prawidłową instrukcją MySQL, generuje błąd składni.
Poprawka:albo przenieś DROP PROCEDURE wiersz przed DELIMITER $$ linia; lub zakończ DROP PROCEDURE oświadczenie z określonym ogranicznikiem, a nie średnikiem.
Drugim zgłaszanym problemem jest błąd składni. Dzieje się tak, ponieważ MySQL nie rozpoznaje IF jako początek poprawnej instrukcji SQL.
IF oświadczenie jest ważne tylko w kontekście programu przechowywanego w MySQL (na przykład w ramach CREATE PROCEDURE oświadczenie.)
Poprawka:użyj IF instrukcja tylko w kontekście programu przechowywanego w MySQL.
Trzecim problemem, który zgłaszasz, jest również błąd składni. Dzieje się tak, ponieważ nie masz prawidłowej składni dla SET oświadczenie; Składnia MySQL dla SET instrukcja do przypisania wartości do zmiennej użytkownika to:
SET @uservar = expr
MySQL oczekuje wyrażenia po znaku równości. MySQL nie oczekiwanie na instrukcję SQL.
Aby przypisać wartość do zmiennej użytkownika jako wynik SELECT instrukcji, wykonaj przypisanie w instrukcji SELECT, na przykład:
SELECT @Count := Count(id) FROM `tbl_object_users` WHERE `username`='jp2code'
Zauważ, że operator przypisania wewnątrz SELECT oświadczenie to := (dwukropek równa się), nie tylko = .