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

Difficoltà nella scrittura di Stored Procedure in MySQL

Come documentato in Definizione dei programmi archiviati :

  • Se utilizzi mysql programma client per definire un programma memorizzato contenente caratteri punto e virgola, sorge un problema. Per impostazione predefinita, mysql riconosce il punto e virgola come delimitatore di istruzione, quindi è necessario ridefinire temporaneamente il delimitatore per causare mysql per passare l'intera definizione del programma memorizzato al server.

    Lo stesso vale per phpMyAdmin.

  • Per ridefinire mysql delimitatore, usa il delimiter comando.

    Non tutte le versioni di phpMyAdmin riconoscono il delimiter comando; invece, si può usare il Delimiter casella di input sotto la casella di input SQL:vedere Come faccio a scrivere un SP in phpMyAdmin (MySQL)?

  • Di seguito è riportato un esempio di una funzione che accetta un parametro, esegue un'operazione utilizzando una funzione SQL e restituisce il risultato. In questo caso, non è necessario utilizzare delimiter perché la definizione della funzione non contiene ; interni delimitatori di istruzione:

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

    Nel tuo caso, puoi rimuovere BEGIN ... END blocco dell'istruzione composta ed evitare la necessità di modificare il delimitatore.