萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 預存程序與函數建立、呼叫與限制詳解

什麼是預存程序與函數

預存程序與函數是預先編譯並儲存在資料庫中的 SQL 陳述式集合。呼叫它們可簡化應用程式開發、減少網路傳輸、提升資料庫處理效能。

建立語法

CREATE PROCEDURE sp_name ([參數列表])
[特性 ...]
BEGIN
    -- SQL 陳述式
END;

CREATE FUNCTION fn_name ([參數列表])
RETURNS 資料型別
[特性 ...]
BEGIN
    -- SQL 陳述式
    RETURN 值;
END;

呼叫方式

CALL sp_name([引數]);
SELECT fn_name([引數]);

完整範例:查詢特定網域資料

DELIMITER $$
CREATE PROCEDURE sp_get_site(IN p_url INT, IN p_sitename INT, OUT p_infodesc INT)
READS SQL DATA
BEGIN
    SELECT * FROM su WHERE url = p_sitename AND domain = 'www.111cn.net';
    SELECT FOUND_ROWS() INTO p_infodesc;
END $$
DELIMITER ;

重要限制

  • 預存程序中可包含 DDL、COMMIT/ROLLBACK,但 不可使用 LOAD DATA INFILE。
  • 函數預設為 NOT DETERMINISTIC,若結果確定可宣告 DETERMINISTIC 以利最佳化。
  • MySQL 5.0 以上版本支援,建議使用 DELIMITER 變更分隔符避免衝突。

修改與刪除

ALTER PROCEDURE sp_name [特性 ...];
DROP PROCEDURE [IF EXISTS] sp_name;
DROP FUNCTION [IF EXISTS] fn_name;

需具備 ALTER ROUTINE 權限。

copyright © 萬盛學電腦網 all rights reserved