簡體   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