1. 程式人生 > >mysql-存儲過程

mysql-存儲過程

bold lar fetch oop 調用方法 default clas font color

1、數據存儲:把多個sql語句封裝成一個方法


delimiter //    修改結束符
create procedure proc()
begin  
select * from student;
end
//
call  調用方法

變量的定義:
declare 變量名  type  default 默認值;
修改變量的值
set 變量名= 值 或 



Drop  procedure proc2;
delimiter //
Create procedure proc2()
Begin 
Declare var1 varchar(10) default null;
Declare var2 int
default 0; select name ,age into var1, var2 from student where id =1; Result consisted of more than one row(這種錯誤出現的原因是沒指定id 的值,結果多余變量的個數) Select var1; Select var2; End // Delimiter ; delimiter // drop procedure if exists proc2; Create procedure proc2() Begin Declare var1 varchar(10) default
null; declare var2 int default 0; select name ,age into var1, var2 from student where id =1; Select var1 as 姓名, var2 as 年齡; End // Delimiter ; 1、存儲過程: Delimiter // 修改結束符 Drop procedure if exists pro1; 判斷,如果存在pro1 則刪除 Create procedure pro1() 創建 procedure 存儲過程 Begin End// Delimiter ; Call pro1;
2、遊標: 語法: ( 聲明遊標 declare cursor_name cursor for select_statement; 打開遊標(在使用遊標之前) open cursor_name; 獲取遊標中的數據 into 變量 fetch cursor_name into var_name1,var_name2,...; 關閉遊標(在使用遊標之後) close cursor_name; ) delimiter // drop procedure if exists pro; create procedure pro() begin declare var varchar(20) default null; declare cursor_name cursor for select name from student where id=1; open cursor_name; fetch cursor_name into var; close cursor_name; select var as 姓名; end // delimiter ; call pro; procedure 程序、declare 聲明、 delimiter // Drop procedure if exists pro// create procedure pro() begin declare var1 char(10) default null; declare var2 int default 0; declare cursor1 cursor for select name ,age from student where id=1; open cursor1; fetch cursor1 into var1, var2; close cursor1; select var1 as ‘姓名’, var2 as ‘年齡’; end // delimiter ; call pro; 3、存儲過程中的if判斷語句 語法: ( if ..... then ......; else if ...... then ......; else .......; end if; ) delimiter // drop procedure if exists pro// Create procedure pro() begin declare var int; if var is null then select var is null as 結果; Else select var as 結果; end if; Set var=10; If var is null then select var is null as 結果; Else select var as 結果; End if; End// Delimiter ; Call pro; 4、存儲過程中的case判斷語句 語法: ( case 要判斷的變量 when .... then .... ; when .... then .... ; ....; else ....; end case; ) delimiter // drop procedure if exists pro; create procedure pro() begin declare var int default 0; set var=5; case var when 1 then select * from student where id=var; when 2 then select * from student where id=var; when 3 then select * from student where id=var; else select no such case as 結果; end case; end// delimiter ; call pro; 5、存儲過程中的loop循環語句 語法: ( loop sql_statement; if ... then leave/iterate; end if; end loop; ) delimiter // drop procedure if exists pro// create procedure pro() begin declare var int default 0; myloop:loop insert student values(null,Rose,var,); if var >=100 then leave myloop; end if; set var=var+1; end loop; end// delimiter ; call pro; 註意:在sql語句中沒有 “==”,直接用“=”來作為判斷等於的符號。 6、存儲過程中的repeat循環語句 語法: ( repeat_label:repeat sql_statement; until ... end repeat repeat_label; ) delimiter // select * from student// drop procedure if exists pro; create procedure pro() begin declare var int default 1; my_repeat:repeat insert into student values(null,Rose,var,); set var=var+1; until var>100 end repeat my_repeat; end// delimiter ; call pro; select * from student; 7、存儲過程中的while循環 語法: ( while_label:while ...(循環條件) do sql_statement; end while while_label; ) delimiter // select * from student// drop procedure if exists pro// create procedure pro() begin declare var int default 719; my_while:while var<=818 do delete from student where id = var; set var=var+1; end while my_while; end// delimiter ; call pro; delimiter // drop procedure if exists pro// create procedure pro() begin declare var int default 1; my_while:while var<=100 do insert into student values(null,Rose,var,); set var=var+1; end while my_while; end// delimiter ; call pro; 8、查看存儲過程 語法: ( show {procedure/function} status [like ‘pattern‘]; show create procedure pro_name; ) show procedure status; show create procedure pro; 9、修改存儲過程 10、刪除存儲過程 語法: ( drop {procedure/function} if exists pro_name; ) drop procedure if exists pro; 11、存儲過程出錯處理 定義錯誤情況 declare condition_name condition for condition_type;

mysql-存儲過程