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 =
.