sql >> Database teknologi >  >> Database Tools >> phpMyAdmin

Kan ikke køre forespørgsel i MySQL-syntaksfejl uventet

Problem med dette:

DELIMITER $$
DROP PROCEDURE IF EXISTS my_test;
CREATE PROCEDURE my_test() ...

er, at MySQL ikke kan se semikolon i slutningen af ​​DROP PROCEDURE erklæringslinje som slutningen af ​​erklæringen. Dette skyldes, at den foregående linje fortalte MySQL, at sætningsterminatoren var noget andet end et semikolon. Du fortalte MySQL, at udsagn ville blive afsluttet med to dollartegn. Så MySQL læser DROP PROCEDURE linje, på udkig efter erklæringsterminatoren. Og hele klatten, den læser, er IKKE en gyldig MySQL-sætning, den genererer en syntaksfejl.

Løsningen:Flyt enten DROP PROCEDURE linje før DELIMITER $$ linje; eller afbryde DROP PROCEDURE sætning med det angivne skilletegn i stedet for et semikolon.

Det andet problem, du rapporterer, er en syntaksfejl. Det sker, fordi MySQL ikke genkender IF som begyndelsen på en gyldig SQL-sætning.

IF erklæringen er kun gyldig inden for konteksten af ​​et MySQL-lagret program (f.eks. inden for en CREATE PROCEDURE erklæring.)

Løsningen:Brug en IF sætning kun inden for konteksten af ​​et MySQL-lagret program.

Det tredje problem, du rapporterer, er også en syntaksfejl. Det sker, fordi du ikke har en gyldig syntaks for et SET udmelding; MySQL-syntaks for SET sætning for at tildele en værdi til en brugervariabel er:

SET @uservar = expr 

MySQL forventer et udtryk efter lighedstegnet. MySQL er ikke forventer en SQL-sætning.

At tildele en værdi til en brugervariabel som resultat af en SELECT sætning, lav opgaven i SELECT-sætningen, for eksempel:

SELECT @Count := Count(id) FROM `tbl_object_users` WHERE `username`='jp2code'

Bemærk, at opgaveoperatøren inde i SELECT sætningen er := (kolon er lig), ikke kun = .



  1. Hvordan ændrer jeg et SQL-forespørgselsvindues fanenavn i SSMS?

  2. UTF8-problem med MySQL 5

  3. se den aktuelle tabelrækkefølge

  4. Sådan viser du værdier i Col3, hvor Col1-værdier er sande og for falske værdier i Col1 kun vis NULL i Col3