无法创建mysql存储过程

时间:2011-02-04 14:23:15

标签: mysql stored-procedures

对于一般的存储过程,我有点像菜鸟,但我正在尝试编写以下内容

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服务器版本对应的手册,以便在'第2行声明@old_id varchar(30)声明get_perm'附近使用正确的语法'* /

。有谁知道我需要做些什么来使这项工作?

2 个答案:

答案 0 :(得分:0)

您需要BEGIN之后的CREATE PROCEDURE clone_perms代码,而不是AS

答案 1 :(得分:0)

不要使用@来启动本地(声明的)变量名称,这仅适用于使用

创建的用户变量

SET @ varname = value;

语句。你还需要用分号终止你的陈述。这是最新错误的原因,没有;在你的第一个声明声明之后。