sql >> Databasteknik >  >> Database Tools >> phpMyAdmin

Svårigheter att skriva lagrad procedur i MYSQL

Som dokumenterats under Definiera lagrade program :

  • Om du använder mysql klientprogram för att definiera ett lagrat program som innehåller semikolontecken, uppstår ett problem. Som standard är mysql själv känner igen semikolon som en satsavgränsare, så du måste omdefiniera avgränsaren tillfälligt för att orsaka mysql för att skicka hela den lagrade programdefinitionen till servern.

    Detsamma gäller phpMyAdmin.

  • För att omdefiniera mysql avgränsare, använd avgränsaren kommando.

    Inte alla versioner av phpMyAdmin känner igen avgränsaren kommando; istället kan man använda Delimiter indataruta under SQL-inmatningsrutan:se Hur skriver jag en SP i phpMyAdmin (MySQL)?

  • Följande är ett exempel på en funktion som tar en parameter, utför en operation med en SQL-funktion och returnerar resultatet. I det här fallet är det onödigt att använda avgränsare eftersom funktionsdefinitionen inte innehåller någon intern ; satsavgränsare:

    mysql> CREATE FUNCTION hello (s CHAR(20))
    mysql> RETURNS CHAR(50) DETERMINISTIC
        -> RETURN CONCAT('Hello, ',s,'!');
    Query OK, 0 rows affected (0.00 sec)
    

    I ditt fall kan du ta bort BEGIN ... END sammansatt satsblock och undvik behovet av att ändra avgränsare.




  1. Hur ger jag mig själv administratörsåtkomst till en lokal SQL Server-instans?

  2. Varför är tabellen CHARSET inställd på utf8mb4 och COLLATION till utf8mb4_unicode_520_ci

  3. mysql sa:Kan inte ansluta:ogiltiga inställningar. xampp

  4. Det går inte att ansluta till SQL Server Analysis Services även om det verkar vara igång