CREATE DEFINER=`root`@`localhost` PROCEDURE `createBusiness`(parameter1 int)
BEGIN
#Routine body goes here...
DECLARE flag int DEFAULT parameter1;#聲明變量flag,將參數(shù)值賦給該變量
DECLARE uuidStr VARCHAR(32);#聲明一個長度為32位的字符串
DECLARE currentTime TIMESTAMP;#聲明一個類型為時間戳的變量
declare err INT default 0;#聲明一個整形變量err,默認值是0
declare continue handler for sqlexception set err=1;#當sqlexception handler捕捉到異常時,設(shè)置err=1
START TRANSACTION;#開始事務(wù)
WHILE flag>0 DO #注意: while不能空實現(xiàn)(在while塊中,里面必須有語句)
#uuid()函數(shù)得到的字符串是'6ccd780c-baba-1026-9564-0040f4311e29',剔除里面的-,得到一個32位的字符串
SET uuidStr = REPLACE(UUID(),'-','') ;
#得到當前的時間
SET currentTime = CURRENT_TIMESTAMP();
#執(zhí)行插入語句,注意連接字符串的函數(shù)concat(str1,str2,...);其中str..也可以是數(shù)字類型
INSERT INTO
表名稱
(id,title,keyword,hasImage,isTodayHead,isShowInHome,isBigness,publishTime,originId,modify_time,isAnalysis)
VALUE
(uuidStr,CONCAT('事件標題',flag),CONCAT('關(guān)鍵字',flag),1,1,0,0,currentTime,CONCAT('xxxxxxx',flag),currentTime,1);
#每循環(huán)一次,flag要減去1,注意沒有flag--的語法
set flag = flag-1;
#在這里測試當err=1時,事務(wù)是否有了回滾,測試ok
#IF flag=7 THEN #注意在procedure中給變量賦值要用到set,或在變量聲明時用default來父子,所以=號可以用來比較兩邊的值是否相等,<=>也可,區(qū)別先不去糾結(jié)。
#set err=1;
#END if;
END WHILE;
IF (err=0) THEN
commit;
select 'OK';
ELSE
rollback;
select 'err';
END IF;
END;