在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 數(shù)據(jù)庫(kù)/ MariaDB過(guò)程
MariaDB比較運(yùn)算符
MariaDB查詢數(shù)據(jù)
MariaDB Like子句
MariaDB Sum()函數(shù)
MariaDB過(guò)程
MariaDB限制返回記錄
MariaDB Count()函數(shù)
MariaDB更新數(shù)據(jù)
MariaDB導(dǎo)出數(shù)據(jù)
MariaDB Intersect運(yùn)算符
MariaDB函數(shù)
MariaDB Min()函數(shù)
MariaDB創(chuàng)建數(shù)據(jù)庫(kù)
MariaDB Avg()函數(shù)
MariaDB刪除數(shù)據(jù)
MariaDB條件
MariaDB功能特點(diǎn)
MariaDB創(chuàng)建表
MariaDB左外連接
MariaDB Union運(yùn)算符
MariaDB安裝
MariaDB選擇數(shù)據(jù)庫(kù)
MariaDB Max()函數(shù)
MariaDB Where子句
MariaDB右外連接
MariaDB內(nèi)連接
MariaDB截?cái)啾?/span>
MariaDB Order By子句
MariaDB教程
MariaDB正則表達(dá)式
MariaDB Union All運(yùn)算符
MariaDB Distinct子句
MariaDB修改表
MariaDB刪除表
MariaDB插入數(shù)據(jù)
MariaDB From子句
MariaDB刪除數(shù)據(jù)庫(kù)
MariaDB簡(jiǎn)介
MariaDB數(shù)據(jù)類型

MariaDB過(guò)程

MariaDB程序是一個(gè)存儲(chǔ)的程序,用來(lái)傳遞參數(shù)。它不像函數(shù)那樣需要返回一個(gè)值(當(dāng)然也不用返回)。

可以創(chuàng)建和刪除像函數(shù)一樣的過(guò)程。

1. 創(chuàng)建過(guò)程

可以像創(chuàng)建MariaDB中的函數(shù)一樣創(chuàng)建過(guò)程。

語(yǔ)法:

CREATE   
[ DEFINER = { CURRENT_USER | user_name } ]   
PROCEDURE procedure_name [ (parameter datatype [, parameter datatype]) ]  
[ LANGUAGE SQL  
| DETERMINISTIC  
| NOT DETERMINISTIC  
| { CONTAINS SQL   
  | NO SQL  
  | READS SQL DATA  
  | MODIFIES SQL DATA }  
| SQL SECURITY { DEFINER | INVOKER }  
| COMMENT 'comment_value'  
BEGIN  
   declaration_section  
   executable_section  
END;

參數(shù)說(shuō)明

  • DEFINER:可選。
  • procedure_name:在MariaDB中分配給此過(guò)程的名稱。
  • Parameter:傳入過(guò)程的一個(gè)或多個(gè)參數(shù)。創(chuàng)建過(guò)程時(shí),可以聲明三種類型的參數(shù):
    • IN:參數(shù)可以被程序引用。 該參數(shù)的值不能被程序覆蓋。
    • OUT:參數(shù)不能被程序引用,但參數(shù)的值可以被程序覆蓋。
    • IN OUT:參數(shù)可以被程序引用,參數(shù)的值可以被程序覆蓋。
  • LANGUAGE SQL:語(yǔ)法為可移植語(yǔ)法,但不會(huì)影響函數(shù)。
  • DETERMINISTIC:表示該函數(shù)將始終返回給定一組輸入?yún)?shù)的一個(gè)結(jié)果。
  • NOT DETERMINISTIC:表示給定一組輸入?yún)?shù),該函數(shù)可能會(huì)返回不同的結(jié)果。 結(jié)果可能受到表格數(shù)據(jù),隨機(jī)數(shù)字或服務(wù)器變量的影響。
  • CONTAINS SQL:這是默認(rèn)的。這是一個(gè)告知MariaDB該函數(shù)包含SQL的信息性子句,但數(shù)據(jù)庫(kù)不驗(yàn)證它是真的。
  • NO SQL:這是一個(gè)信息性子句,不使用也不會(huì)影響功能。
  • READS SQL DATA:這是一個(gè)告知MariaDB的函數(shù),它將使用SELECT語(yǔ)句讀取數(shù)據(jù),但不會(huì)修改任何數(shù)據(jù)。
  • MODIFIES SQL DATA:這是一個(gè)告知MariaDB的信息子句,該函數(shù)將使用INSERT,UPDATE,DELETE或其他DDL語(yǔ)句修改SQL數(shù)據(jù)。
  • declaration_section:聲明局部變量的過(guò)程中的位置。
  • executable_section:輸入過(guò)程代碼的過(guò)程中的位置。

示例

在MariaDB數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)名為“CalcValue”的過(guò)程。參考以下實(shí)現(xiàn)代碼 -

DELIMITER //  
CREATE procedure CalcValue ( OUT ending_value INT )  
DETERMINISTIC  
BEGIN  
   DECLARE total_value INT;  
   SET total_value = 50;  
   label1: WHILE total_value <= 3000 DO  
     SET total_value = total_value * 2;  
   END WHILE label1;  
   SET ending_value = total_value;  
END; //  
DELIMITER ;

打開HeidiSQL,執(zhí)行上面創(chuàng)建語(yǔ)句 -

現(xiàn)在刷新左側(cè)的testdb數(shù)據(jù)庫(kù),可以看到名為“CalcValue”的過(guò)程已創(chuàng)建。

編輯或查看這個(gè)過(guò)程,如下圖所示 -

2. 調(diào)用過(guò)程

現(xiàn)在可以看到名為“CalcValue”的過(guò)程已創(chuàng)建??梢詤⒖既缦路绞絹?lái)調(diào)用過(guò)程:

MariaDB [testdb]> CALL CalcValue(@salary);
Query OK, 0 rows affected (0.00 sec)

MariaDB [testdb]> select @salary;
+---------+
| @salary |
+---------+
|    3200 |
+---------+
1 row in set (0.00 sec)

3. 刪除過(guò)程

可以使用以下命令刪除過(guò)程:

語(yǔ)法:

DROP procedure [ IF EXISTS ] procedure_name;

參數(shù)說(shuō)明:

  • procedure_name:它指定要?jiǎng)h除的過(guò)程的名稱。

示例:

DROP procedure CalcValue;

可以看到現(xiàn)在過(guò)程已經(jīng)被刪除,并且在列表中不可見。