MariaDB показывает ошибку при создании процедуры - PullRequest
0 голосов
/ 08 сентября 2018

Maria DB (Xampp) показывает ошибку при выполнении следующего кода:

Код:

   DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_createUser`(
    IN p_name VARCHAR(20),
    IN p_username VARCHAR(20),
    IN p_password VARCHAR(20)
)
BEGIN
    if ( select exists (select 1 from tbl_user where user_username = p_username) ) THEN

        select 'Username Exists !!';

    ELSE

        insert into tbl_user
        (
            user_name,
            user_username,
            user_password
        )
        values
        (
            p_name,
            p_username,
            p_password
        );

    END IF;
END$$
DELIMITER ;

Ошибка:

# 1064 - у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, для правильного синтаксиса для использования рядом с '' в строке 9

1 Ответ

0 голосов
/ 10 сентября 2018

Я не могу воспроизвести проблему:

MariaDB [_]> DROP PROCEDURE IF EXISTS `sp_createUser`;
Query OK, 0 rows affected (0.001 sec)

MariaDB [_]> DELIMITER $$

MariaDB [_]> CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_createUser`(
    ->   IN `p_name` VARCHAR(20),
    ->   IN `p_username` VARCHAR(20),
    ->   IN `p_password` VARCHAR(20)
    -> )
    -> BEGIN
    ->   IF ( select exists
    ->          (select 1
    ->           from tbl_user
    ->           where user_username = p_username) ) THEN
    ->     SELECT 'Username Exists !!';
    ->   ELSE
    ->     INSERT INTO `tbl_user`
    ->     (
    ->         `user_name`,
    ->         `user_username`,
    ->         `user_password`
    ->     )
    ->     VALUES
    ->     (
    ->         `p_name`,
    ->         `p_username`,
    ->         `p_password`
    ->     );
    ->     END IF;
    -> END$$
Query OK, 0 rows affected (0.000 sec)

MariaDB [_]> DELIMITER ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...