mysql-存儲過程
阿新 • • 發佈:2017-06-09
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 intdefault 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) defaultnull; 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-存儲過程