не может создать хранимую процедуру mysql - PullRequest
0 голосов
/ 04 февраля 2011

Я немного нуб, когда дело касается хранимых процедур в целом, но я пытаюсь написать следующее

Create procedure clone_perms 
as
declare @new_id varchar(30), @old_id varchar(30)

declare get_perms cursor for select userspermsUserid, userspermsPermission from users_permissions where userspermsUserid=@old_id

declare @perms varchar(30), @on_off boolean

FETCH get_perms into @perms, @on_off
while(@@sqlstatus=0)
BEGIN
    if exists ( select 1 from permissions where userspermsUserid=@new_id and userspermsPermID=@perm )
    BEGIN   
        update permissions set userspermsPermission=@on_off where userspermsUserid=@new_id and userspermsPermID=@perm
    END
    else
    BEGIN
        insert permissions (userspermsUserID, userspermsPermID, userspermsPermission) values (@new_id, @perms, @on_off)
    END

    FETCH get_perms into @perms, @on_off
END
CLOSE get_perms  

DEALLOCATE CURSOR get_perms
end   

. Я получаю следующую ошибку при попытке создать его:

/ * Ошибка SQL (1064): в синтаксисе SQL есть ошибка; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса, который можно использовать рядом с «as»

. Кто-нибудь знает, что мне нужно сделать, чтобы эта работа?

Ответы [ 2 ]

0 голосов
/ 06 ноября 2011

не используйте @ для запуска локальных (объявленных) имен переменных, это только для пользовательских переменных, создаваемых с помощью

SET @ varname = value;

вам также нужно завершить свои утверждения точкой с запятой.это причина последней ошибки, нет;после вашего первого заявления заявить.

0 голосов
/ 04 февраля 2011

Вы должны иметь тег BEGIN после CREATE PROCEDURE clone_perms, а не AS

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