Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
can';t创建mysql存储过程_Mysql_Stored Procedures - Fatal编程技术网

can';t创建mysql存储过程

can';t创建mysql存储过程,mysql,stored-procedures,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 declar

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

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行的“as declare@new_id varchar(30)declare@old_id varchar(30)declare get_perm”使用的正确语法*/


。有人知道我需要做些什么来完成这项工作吗?

您需要在
创建过程clone\u perms
之后添加
开始标记,而不是
,因为
不要使用@来启动本地(声明的)变量名,这仅适用于您使用

设置@varname=value


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

请在您的问题中包括服务器版本。现在我发现了这个错误。/*SQL错误(1064):您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解在第2行的“BEGIN declare@new_id varchar(30)、@old_id varchar(30)declare get_perms cur”附近使用的正确语法*/抱歉,没有测试它,但这是我发现的最明显的遗漏。我要好好看看。