1. 程式人生 > 實用技巧 >9. 儲存過程和函式

9. 儲存過程和函式

建立儲存過程

delimiter &&
create procedure pro_name (in id int, out count_num int)
  reads sql date 
  begin 
  select count(*) from t_book where book_type = id;
  end 
&&
delimiter ;

建立儲存函式

    delimiter &&
    create funtion func_book (book_id int)
      returns varchar(20)
      begin
        return (select book_name from t_book where id = book_id)
      end
    && 
    delimiter ;

變數

  • 定義變數
    • declare 變數名 型別 [default 值]‘
  • 為變數賦值
    • set 變數名 = 值;
    • select 欄位 intot 變數名 from 表名 where 條件

遊標

  • 宣告遊標
    • declare 遊標名 cursor for select語句;
  • 開啟遊標
    • open 遊標名;
  • 使用遊標
    • fetch 遊標名 into 變數名;
  • 關閉遊標
    • close 遊標名;

流程控制語句

if語句

    if 條件 then 執行語句
      [elseif 條件 then 執行語句]
      ...
      [else 執行語句]
    end if 

case語句

case 值
  when 值 then 執行語句;
  ...
  [else 執行語句]
 end case 

loop,leave語句

[標籤:] loop 
  執行語句;
  [leave 標籤]
end loop [標籤];

iterate語句

跳出本次迴圈

iterate 標籤;

repeat語句

[標籤:] repeat
  執行語句;
  until 條件
end repeat [標籤];

while語句

[標籤:] while 條件 do
  執行語句;
end while [標籤]

呼叫儲存過程和函式

  • 呼叫儲存過程
    • call 儲存過程名(引數列表);
  • 呼叫函式
    • 函式名(引數列表);

檢視儲存過程和函式

  • show status 語句檢視儲存過程和函式的狀態
    • show status like '儲存名或函式名';
  • show create語句檢視儲存過程和函式的定義
    • show create '儲存名或函式名';

修改儲存過程或函式

alter 儲存過程或函式的名稱 .......

刪除儲存過程或函式

drop 儲存過程或函式的名稱;