繁体   English   中英

无法创建mysql存储过程

[英]can't create mysql stored procedure

一般而言,对于存储过程,我有点菜鸟,但是我尝试编写以下内容

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行“'声明@new_id varchar(30)声明@old_id varchar(30)声明get_perm'附近使用* /

有人知道我需要做些什么才能使这项工作吗?

您需要在CREATE PROCEDURE clone_perms之后使用BEGIN标记,而不要使用AS

请勿使用@开头本地(声明的)变量名称,仅用于使用

SET @ varname =值;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM