My SQL 高級部分
阿新 • • 發佈:2017-09-17
自己 存儲過程 聲明變量 無法訪問 服務器 cnblogs all 高級 begin
一、存儲過程
存儲過程是存儲在數據庫目錄中的一段聲明性sql語句,感覺其功能類似函數。
1.簡單的存儲過程
我們可以通過create procedure procedure_name 語句創建存儲過程,然後通過call procedure_name 語句調用存儲過程。
delimiter // create procedure procedure_name( ) begin select * from table_name end // delimiter ;
下面我們來詳細的說明上述存儲過程:
- 第一個命令delimiter // ,與存儲過程語法無關。它是將標準分隔符--逗號(;)改為--雙斜杠(//)。因為我們想將存儲過程作為整體傳給服務器,而不是讓MySQL依次解釋每個語句。關鍵字end後使用分隔符//來指示存儲過程的結束,左後將分隔符該回分號。
- 使用create procedure語句創建存儲過程。
- begin 和 end 之間的部分是存儲過程的主題,將聲明性的sql語句放在主題中以處理業務邏輯。
2.聲明變量
要在存儲過程中聲明一個變量,可使用declare 語句,其基本語法格式如下:
declare variable_name datetype( size ) default default_value;
聲明變量後,就可以開始使用變量了。我們可以使用set 語句為其分配值,也可以使用 select into 語句將查詢結果分配給一個變量.
例如,假設我們有一個產品表(products),我們聲明兩個變量 total_count 和 m,將totla_count賦值為10,將products表的數據個數賦值給m:
declare total_count,m int default 0; set total_count = 10; select count(*) into m from products;
註意:變量有自己的範圍(作用域),它用來定義它的生命周期。 如果在存儲過程中聲明一個變量,那麽當達到存儲過程的END語句時,它將超出範圍,因此在其它代碼塊中無法訪問。
3.參數簡介
My SQL 高級部分