--------------建立不帶參數的存儲過程----------------- DELIMITER;; drop PROCEDURE if EXISTS selectStudent; create PROCEDURE 'selectStudent'() BEGIN select*from student; end;; DELIMITER; --------------帶參數的存儲過程-------------------- drop PROCEDURE if EXISTS selectCity; create PROCEDURE 'selectCity'( in _cityID varchar(10)--輸入參數-- ) BEGIN select *from student where cityID=_cityID; end; --------------帶有輸出參數的存儲過程-------------------- drop PROCEDURE if EXISTS selectCity_Name; CREATE PROCEDURE 'selectCity_Name'( in _CityID varchar(10)--輸入參數, out _City varchar(10) --輸出參數, inout _CityIDName varchar(10) --輸入輸出參數 ) BEGIN select*from student where cityID=_CityID and CityName=_CityName INTO _City; end; set @_CityID='1'; set @_CityIDName='鄭州'; call selectCity_Name(@_CityID,@_City,@_CityIDName); select @_CityIDName as ID,@_City; -----------帶有通配符的存儲過程------------ drop PROCEDURE if EXISTS selectCityLike; create PROCEDURE 'selectCityLike'( in _CityName varchar(10) ) BEGIN set @exec_sql =CONCAT("select *from student where name like '%",_CityName,"%'"); PREPARE stmt from @exec_sql ; --定義 EXECUTE stmt;--執行預處理語句 DEALLOCATE PREPARE stmt;--刪除定義 end -------循環語句:操做前檢查結果---------- create PROCEDURE proc4() BEGIN declare var int; set var=0; WHILE var<6 DO insert into t VALUES(var); set var=var+1; end while; end ----------循環語句:操做後檢查結果------------ create PROCEDURE proc5() BEGIN DECLARE v int; set v=0; REPEAT insert into t VALUES(v); set v=v+1; UNTIL v>=5 end repeat; end ----------循環語句:loop..endloop------------ create PROCEDURE proc6() BEGIN declare v int; set v=0; loop_lable:LOOP insert into values(v); set v=v+1; if v>=5 THEN LEAVE loop_lable; end if; end loop; end ----------循環語句:loop..endloop------------- create PROCEDURE proc7() BEGIN DECLARE v int; set v=0; loop_lable:LOOP if v=3 THEN set v=v+1; ITERATE loop_lable;--繼續循環 end if; insert into t values(v); set v=v+1; if v>=5 THEN leave loop_lable;--跳出循環 end if; end loop; end;