MySQL進階8

存儲過程:

一組可編程的函數,是爲了完成特定功能的sql語句集mysql

經編譯建立並保存在數據庫中,用戶可經過指定存儲過程的名字並給定參數(須要時)來調用執行sql

存儲過程就是具備名字的一段代碼,用來完成一個特定的功能數據庫

建立的存儲過程保存在數據庫的數據字典中express

 

用存儲過程的好處:

將重複性很高的一些操做封裝到一個存儲過程當中簡化了對這些sql的調用編程

批量處理安全

統一接口,確保數據安全服務器

相對於oracle數據庫來講,mysql的存儲過程相對功能較弱,使用較少oracle

 

存儲過程的建立和調用:

delimiter $$:

它與存儲過程語法無關函數

delimiter語句將標準分隔符-分號(;)更改成$$工具

由於咱們想將存儲過程做爲總體傳遞給服務器,而不是讓mysql工具一次解釋每一個語句

告訴mysql解釋器,該段命令是否已經結束了,mysql是否能夠執行了,默認狀況下delimiter是分號;,在命令行客戶端中若是有一段命令以分號結束那麼回車後mysql將會執行該命令,但有時候不但願mysql這麼作,在位可能輸入較多的語句且語句中包含有分號,使用delimiter $$,這樣只有當$$出現以後mysql解釋器纔會執行該段語句

 

建立存儲過程:

create procedure 名稱() begin 語句 end $$

 

調用存儲過程:

call 名稱();

 

刪除存儲過程:

drop procedure 名稱;

 

存儲過程變量:

在存儲過程當中聲明一個變量

 

使用declare語句:

declare 變量名 數據類型(大小) default 默認值;

能夠聲明一個名爲total_sale的變量,數據類型爲int,默認值爲0

declare total_sale int default 0;

聲明共享數據類型的兩個或多個變量

declare x, y int default 0;

 

分配變量值:

要爲變量分配一個值,可使用set語句

set total_count = 10;

使用select into語句將查詢的結果分配給一個變量

select count(*) into total_products from products;

 

變量的範圍:

若是在存儲過程當中聲明一個變量,那麼當達到存儲過程的end語句時,它將超出範圍,所以在其餘代碼塊中沒法訪問

 

存儲過程參數:

三種類型:

in:表示調用者向過程傳入值(傳入值能夠是字面或變量)

 

 out:表示過程向調用者傳出值

inout:inout參數是in和out參數的組合

 

定義參數:

create produce name(模式,參數名稱 數據類型(大小))

 

存儲過程語句:

if語句:

if expression then statements; end if;

if expression then statements; else else_statmemts; end if;

 

case語句:

case case_expression when when_expression_1 then commands when when_expression_2 then commands ... else commands end case;

 

循環:

while expression do statments end while

repeat statments; until expression end repeat

 

查看存儲過程:

查看全部存儲過程:

show procedure status;

查看指定數據庫的存儲過程

show procedure status where db=數據庫名;

查看指定存儲過程源代碼

show create procedure 存儲過程名;
相關文章
相關標籤/搜索