MySql儲存過程寫法

2021-08-25 10:24:36 字數 1586 閱讀 8701

#mysql儲存過程的單行注釋用「#」,如果使用「--」則必須在後面使用至少乙個空格,否則儲存過程編譯不通過

create procedure addwebgameadmin(in gameid int)

begin

declare gametitle varchar(100) character set utf8; -- 儲存過程變數的字符集宣告,否則中文出現亂碼

declare adminid varchar(50); -- 管理員id

declare adminamount varchar(100); -- 管理員賬號:遊戲名稱+admin

declare adminpwd varchar(50); -- 管理員密碼:md5(賬號+密碼)

declare roleid varchar(50); -- 許可權id

declare curvar varchar(50) default ''; -- 當前游標指向的結果

declare stop int default 0;-- 處理游標到達最後一行的情況

declare resultset cursor for select node_id from gaga_lianyun_manage_node; -- 建立游標

declare continue handler for sqlstate '02000' set stop=1; -- 宣告游標的異常處理,設定乙個終止標記

select title into gametitle from php_ecms_webgame where id=gameid;

if gametitle is not null then

set adminid=replace(uuid(),'-',''); -- (這裡使用了replace函式和uuid函式,)管理員id

set adminamount=concat(gametitle,'admin'); -- (字串連線函式concat)管理員賬號

set adminpwd=md5(concat(adminamount,'123')); -- 管理員密碼

insert into gaga_lianyun_admin (admin_id,amount,pwd,game_id) values (adminid,adminamount,adminpwd,gameid); -- 插入記錄

open resultset;

fetch resultset into curvar;

-- 判斷游標是否已經到達最後

while stop <> 1 do

select replace(uuid(),'-','') into roleid; -- 許可權id

insert into gaga_lianyun_manage_node (role_id,admin_id,manage_node_id) values (roleid,adminid,curvar);

fetch resultset into curvar; -- 讀取下一行資料

end while;

close resultset;

commit;

end if;

end;

儲存過程寫法

引用 儲存過程呼叫 drop procedure if exists pro rep shadow rs delimiter rep shadow rs 用來處理資訊的增加,更新和刪除 每次只更新上次以來沒有做過的資料 根據不同的標誌位 需要乙個輸出的引數,如果返回為0,則呼叫失敗,事務回滾 如果返...

儲存過程寫法

引用 儲存過程呼叫 drop procedure if exists pro rep shadow rs delimiter rep shadow rs 用來處理資訊的增加,更新和刪除 每次只更新上次以來沒有做過的資料 根據不同的標誌位 需要乙個輸出的引數,如果返回為0,則呼叫失敗,事務回滾 如果返...

儲存過程寫法

建立儲存過程執行刪除操作 alter procedure dbo ad preempted timer asdeclare pid varchar 32 declare times date declare nowtime date declare difftime int 定義乙個游標 decla...