他人理解+自理解+學習Mysql存儲過程

作爲一個水平無法溢出的菜鳥,還是老老實實認真學習的好。在系統的學習Mysql存儲過程之前,還需要部分的解釋一下Mysql中的一些在存儲過程中出現的關鍵字以及語法的使用。

decimal(2,1)  指定義的數值含有兩位有效長度,其中包含一位小數。DECLARE(declare)在mysql中是聲明一個變量的意思。DEFAULT  在sql中爲列插入默認值。

例:

DECLARE val  int DEFAULT 6; 聲明一個變量val,其類型爲int,自定義默認值爲6。

in :給參數傳入值,定義的參數就得到了值。out:模式定義的參數只能在過程體內部賦值,表示該參數可以將某

值傳遞迴調用他的過程(在存儲過程內部,該參數初始值爲 null,無論調用者是否給存儲過程參數設置值) inout:

調用者還可以通過 inout 參數傳遞值給存儲過程,也可以從存儲過程內部傳值給調用者。

例:

	CREATE PROCEDURE  test (in type INT);/*將調用方法時傳入的參數賦值給type*/
	CREATE PROCEDURE avgid(
	OUT avgi DECIMAL(3,1)        /*要輸出的參數*/
	)
	BEGIN
	SELECT AVG(id) INTO avgi FROM `user`; /*通過在過程內部將值賦予給參數*/
	END; 
	CALL avgid(@avgi); 		/*調用該存儲過程*/
	SELECT @avgi;				/*獲取查詢值*/
關於inout的使用:
CREATE PROCEDURE p3(INOUT age INT)
BEGIN
  SET age := age + 20;
END
set @currage =18
call p3(@currage)/*存儲過程在調用currage的時候,會將該值直接賦值到存儲過程中並執行(所謂的內部傳
值)*/
以上是部分的功能說明,接下來是對存儲過程的學習。
個人認爲,在學習任何技術之前一定要保證有這樣的想法:該技術的作用是什麼?與之前所學習的技術有什麼關聯
或者重大的區別?是否有使用到之前的知識?
首先了解存儲過程是什麼:存儲過程就是有業務邏輯和流程的集合,可以在存儲過程中創建表,更新數據,刪
除等等。
其次存儲過程通過把處理封裝在容易使用的單元中,簡化複雜的操作;
由於不要求反覆建立一系列處理步驟,這保證了數據的完整性。如果所有開發人員和應用程序都使用同一(試驗和
測試)存儲過程,則所使用的代碼都是相同的。使用存儲過程,也大量的減少了錯誤保證數據的一致性;
簡化對變動的管理。如果表名、列名或業務邏輯(或別的內容)有變化,只需要更改存儲過程的代碼。使用它的人
員甚至不需要知道這些變化。
下面是簡單的存儲過程實例:
創建存儲過程:
CREATE PROCUDER procude_rname()
BEGIN
SQL執行語句;
EDN;
call procedureName();/*調用存儲過程*/

DORP PROCEDURE IFEXISTS procedureName;/*刪除存儲過程,刪除後面無需調用括號*/

帶參的存儲過程:

1.    create procedure procedureName( 

2.        out min decimal(8,2), 

3.        out avg decimal(8,2), 

4.        out max decimal(8,2) 

5.    

6.    BEGIN 

7.        select MIN(price) INTO min from order

8.        select AVG(price) into avg from order

9.        select MAX(price) into max from order

END 

1.    -- 由於過程指定三個參數, 故調用必須要參數匹配 

call procedureName(@min, @avg, @max);  
select @min, @avg, @max;
以下爲帶條件語句的存儲過程:
CREATE PROCEDURE useif(in type INT) /*創建一個存儲過程*/
BEGIN
DECLARE c varchar(200);
if type = 0 THEN
set c = '該參數值爲 0';
ELSE 
set c ='該參數值不爲 0';
END IF;
SELECT c;
END;
set @type=1;
call useif(@type);
查詢結果:
以上爲本次對存儲過程的基礎學習,只有掌握了基礎才能夠很好的進階。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章