MySql INSERT Процедура - PullRequest
0 голосов
/ 12 мая 2011

Я новичок в MySql, и у меня проблема с моей хранимой процедурой. Я пытаюсь создать новый sp для вставки, как:

CREATE DEFINER = CURRENT_USER PROCEDURE 
`NewProc`
(
    IN `PCountryId` binary(16),
    IN `PCountryName` varchar(50),
    IN `PCountryLongitude` float,
    IN `PCountryLatitude` float
)
BEGIN
    INSERT INTO 
        country
        (
            CountryId,
            CountryName,
            CountryLongitude,
            CountryLatitude
        )
    VALUES
        (
            PCountryId,
            PCountryName,
            PCountryLongitude,
            PCountryLatitude
        )
END;

но когда я пытаюсь запустить, я получаю эту ошибку:

[Err] 1064 - у вас есть ошибка в вашем Синтаксис SQL; проверьте руководство, которое соответствует вашему серверу MySQL версия для правильного использования синтаксиса около «END» в строке 25

Не могли бы вы помочь мне разобраться с этой проблемой?

Спасибо

EDIT

Когда я удаляю определитель

DEFINER = CURRENT_USER

отлично работает.

Ответы [ 2 ]

0 голосов
/ 01 февраля 2012

Разделитель внутри хранимой процедуры должен отличаться от текущего разделителя, поэтому вы должны написать свою процедуру следующим образом:

(Отказ от ответственности: я не проверял вашу процедуру, поэтому возможны другие проблемы)

DELIMITER $$
DROP PROCEDURE IF EXISTS NewProc $$
CREATE DEFINER = CURRENT_USER PROCEDURE 
`NewProc`
(
    IN `PCountryId` binary(16),
    IN `PCountryName` varchar(50),
    IN `PCountryLongitude` float,
    IN `PCountryLatitude` float
)
BEGIN
    INSERT INTO 
        country
        (
            CountryId,
            CountryName,
            CountryLongitude,
            CountryLatitude
        )
    VALUES
        (
            PCountryId,
            PCountryName,
            PCountryLongitude,
            PCountryLatitude
        );
END $$

DELIMITER ;
0 голосов
/ 12 мая 2011

Значением DEFINER по умолчанию является CURRENT_USER.

MySQL 5.0, руководство 12.1.9.:

Если у вас нет СУПЕР привилегия, единственное законное значение пользователя это ваш собственный аккаунт, либо указан буквально или с помощью CURRENT_USER. Вы не можете установить определитель для некоторых другой аккаунт.

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