mysql儲存過程例項詳解
- IT科技
- 關注:5.64K次
mysql中儲存過程是屬於一種在資料庫中儲存複雜程式,以便於外部程式呼叫的一種資料庫物件。
儲存過程一般來說是為了完成特定功能的SQL語句集,經過編譯後建立並儲存在資料庫中,使用者可以通過指定儲存過程的名字並給定引數(通常是在需要時)來進行呼叫執行。
mysql儲存過程優點:
1、儲存過程可以進行封裝,並且隱藏複雜的商業邏輯。
2、儲存過程能夠回傳值,並能接受引數。
3、儲存過程通常是無法使用SELECT指令來進行執行的,由於它是屬於子程式,與檢視表、資料表或是使用者定義函式不同。
4、儲存過程能夠用於資料檢驗,強制實行商業邏輯等。
當然,它也存在了一部分缺點:
1、儲存過程一般是定製化於特定的資料庫上,因為其所支援的程式語言不同。當切換到了其他廠商的資料庫系統時,就需要重寫原有的儲存過程了。
2、儲存過程的效能調校與撰寫,一般會受限於各種資料庫系統。
參考示例:
儲存過程的操作,具體程式碼如下:
建立:
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 儲存過程中的關鍵語法:
宣告語句結束符,可自定義為:
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; #將語句的結束符號恢復為分號
- 文章版權屬於文章作者所有,轉載請註明 https://shqsg.com/dianzi/g3m0nn.html