my sql存儲過程 基本使用

--------------建立不帶參數的存儲過程-----------------
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;
相關文章
相關標籤/搜索