溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Mysql存儲(chǔ)過(guò)程編寫(xiě)

發(fā)布時(shí)間:2020-07-31 13:28:40 來(lái)源:網(wǎng)絡(luò) 閱讀:335 作者:羅禹 欄目:MySQL數(shù)據(jù)庫(kù)

Mysql存儲(chǔ)過(guò)程編寫(xiě)
存儲(chǔ)過(guò)程編寫(xiě)的模板:
Create PROCEDURE PROCEDUREName (IN para mint,……)
Begin
Declare varname type;
語(yǔ)句;
End;
以上就是存儲(chǔ)過(guò)程的編寫(xiě)模板。
其中,type可以是表中的任意類(lèi)型,比如:varchar,bigint,int,decimal,longtext等等類(lèi)型。
游標(biāo)的聲明是:
Declare cursorName cursor from select語(yǔ)句。
Declare continue handler for not found set varName = 1;
varName在使用的時(shí)候,需要進(jìn)行聲明,這個(gè)是表明如果游標(biāo)沒(méi)有數(shù)據(jù)了,varName賦值為1時(shí)表示沒(méi)有值。
Open cursorName;表示打開(kāi)游標(biāo)。
CLOSE cursorName;表示關(guān)閉游標(biāo)。
FETCH cursorName into varlist;表示向游標(biāo)中取出值。
If條件語(yǔ)句:
1、種情況
If 條件 then
滿(mǎn)足條件時(shí)執(zhí)行的語(yǔ)句
End if;
2、種情況
If 條件 then
滿(mǎn)足條件的執(zhí)行的語(yǔ)句
Else
不滿(mǎn)足條件的執(zhí)行的語(yǔ)句
End if;
循環(huán)語(yǔ)句:
Out_loop:LOOP

END LOOP out_loop;
這個(gè)是LOOP循環(huán),其中out_loop表示的是LOOP的循環(huán)標(biāo)簽,類(lèi)似于匯編的標(biāo)簽。
其中結(jié)束LOOP循環(huán)的語(yǔ)句是:
LEAVE out_loop;out_loop表示LOOPd的標(biāo)簽
例子:
create PROCEDURE selectExtratUnit()
BEGIN
DECLARE id BIGINT;
DECLARE na LONGTEXT;
DECLARE linkName LONGTEXT;
DECLARE notfound INT;
DECLARE cursor_avgScore CURSOR for select summary_id,text2 from edoc_summary_extend_send_sj where text2 is not null and text2 <> '';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET notfound = 1;
OPEN cursor_avgScore;
out_loop:LOOP
if notfound = 1 THEN
LEAVE out_loop;
end if;
FETCH cursor_avgScore into id,na;
select group_concat(org_name) into linkName from trans_org_sj where org_id in (
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(na,'|',help_topic_id+1),'|',-1) AS num FROM mysql.help_topic WHERE help_topic_id < LENGTH(na)-LENGTH(REPLACE(na,"|",''))+1 );
INSERT into extrat_table(id,orgname) VALUES(id,linkName);
END LOOP out_loop;
CLOSE cursor_avgScore;
end;

注意:
在創(chuàng)建存儲(chǔ)過(guò)程的時(shí)候,選用的用戶(hù)端的不同,會(huì)導(dǎo)致存儲(chǔ)過(guò)程在語(yǔ)法對(duì)的情況下,會(huì)有一些錯(cuò)誤。最好使用Navicat和mysql自帶的黑窗口。如果使用mysql自帶的黑窗口,需要在編寫(xiě)存儲(chǔ)過(guò)程的時(shí)候要使用DELIMITER //命令,執(zhí)行完成后,在編寫(xiě)存儲(chǔ)過(guò)程,編寫(xiě)完成后,使用//來(lái)表示命令的結(jié)束。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI