當前位置:生活全書館 >

IT科技

> mysql儲存過程例項詳解

mysql儲存過程例項詳解

mysql中儲存過程是屬於一種在資料庫中儲存複雜程式,以便於外部程式呼叫的一種資料庫物件。

儲存過程一般來說是為了完成特定功能的SQL語句集,經過編譯後建立並儲存在資料庫中,使用者可以通過指定儲存過程的名字並給定引數(通常是在需要時)來進行呼叫執行。

mysql儲存過程優點:

1、儲存過程可以進行封裝,並且隱藏複雜的商業邏輯。

2、儲存過程能夠回傳值,並能接受引數。

3、儲存過程通常是無法使用SELECT指令來進行執行的,由於它是屬於子程式,與檢視表、資料表或是使用者定義函式不同。

4、儲存過程能夠用於資料檢驗,強制實行商業邏輯等。

當然,它也存在了一部分缺點:

1、儲存過程一般是定製化於特定的資料庫上,因為其所支援的程式語言不同。當切換到了其他廠商的資料庫系統時,就需要重寫原有的儲存過程了。

2、儲存過程的效能調校與撰寫,一般會受限於各種資料庫系統。

mysql儲存過程例項詳解

參考示例:

儲存過程的操作,具體程式碼如下:

建立:

CREATE PROCEDURE sp_name([proc_parameter[,...]])

    [characteristic...] routine_body

    

proc_parameter:

[IN|OUT|INOUT] param_name type    #type: Any valid MySQL data type

characteristic:

LANGUAGE SQL

|[NOT] DETERMINISTIC|{CONTAINS SQL|NO SQL|READS SQL DATA|MODIFIES SQL DATA}|SQL SECURITY {DEFINAER|INVOKER}|COMMENT 'string'

routine_body:

Valid SQL procedure statement or statements

修改:

ALTER PROCEDURE sp_name [characteristic...]

characteristic:

{CONTAINS SQL|NO SQL|READS SQL DATA|MODIFIES SQL DATA}|SQL SECURITY {DEFINAER|INVOKER}|COMMENT 'string'

呼叫:

CALL sp_name([parameter[,...]])

刪除:

DROP PROCEDURE sp_name

檢視:

show PROCEDURE STATUS [like 'pattern']

SHOW CREATE PROCEDURE sp_name

mysql儲存過程例項詳解 第2張

在MYSQL 儲存過程中的關鍵語法:

宣告語句結束符,可自定義為:

DELIMITER $$

DELIMITER //

宣告儲存過程,即:

CREATE PROCEDURE demo_in_parameter(IN p_in int)       

儲存過程開始與結束符號,即:

BEGIN .... END    

變數賦值,即:

SET @p_in=1  

變數定義:

DECLARE l_int int unsigned default 4000000; 

建立mysql儲存過程、儲存函式:

create procedure 儲存過程名(引數)

儲存過程體:

create function 儲存函式名(引數)

示例:

若是刪除給定球員參加的所有比賽,具體程式碼為:

mysql> delimiter $$  #將語句的結束符號從分號;臨時改為兩個$$(可以為自定義)

mysql> CREATE PROCEDURE delete_matches(IN p_playerno INTEGER)

    -> BEGIN

    ->   DELETE FROM MATCHES

    ->    WHERE playerno = p_playerno;

    -> END$$

Query OK, 0 rows affected (0.01 sec)

mysql> delimiter;  #將語句的結束符號恢復為分號

標籤: 例項 mysql 儲存
  • 文章版權屬於文章作者所有,轉載請註明 https://shqsg.com/dianzi/g3m0nn.html