1. 程式人生 > >My SQL 高級部分

My SQL 高級部分

自己 存儲過程 聲明變量 無法訪問 服務器 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 高級部分