首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 存儲過程從入門到進階:參數、流程控制與管理操作

     編輯:MySQL 綜合教學

MySQL 存儲過程從入門到進階:參數、流程控制與管理操作

1. 存儲過程核心概念

類似編程語言中的函數,將一組 SQL 語句封裝,支持參數傳遞、條件判斷、循環等流程控制,實現 SQL 級編程。

2. 基礎操作

2.1 查看現有存儲過程

SHOW PROCEDURE STATUS;
SHOW CREATE PROCEDURE proc_name;

2.2 創建存儲過程

關鍵點:使用 DELIMITER // 臨時修改語句分隔符,避免過程體內分號衝突。

無參數存儲過程
DELIMITER //
CREATE PROCEDURE p1()
BEGIN
    SELECT COUNT(*) FROM goods;
END //
DELIMITER ;

CALL p1();
OUT 參數:返回運行結果
DELIMITER //
CREATE PROCEDURE p2(OUT a INT)
BEGIN
    SELECT COUNT(*) INTO a FROM goods;
END //
DELIMITER ;

CALL p2(@cnt);
SELECT @cnt;
IN 參數:作為運行條件
DELIMITER //
CREATE PROCEDURE p3(IN a INT)
BEGIN
    SELECT goods_id, goods_name, shop_price FROM goods WHERE goods_id = a;
END //
DELIMITER ;

CALL p3(1);
IF/ELSE 流程控制
DELIMITER //
CREATE PROCEDURE p4(IN score INT)
BEGIN
    IF score >= 60 THEN
        SELECT '及格';
    ELSE
        SELECT '不及格';
    END IF;
END //
DELIMITER ;
WHILE 循環
DELIMITER //
CREATE PROCEDURE p5(IN n INT)
BEGIN
    DECLARE i INT DEFAULT 1;
    DECLARE sum INT DEFAULT 0;
    WHILE i <= n DO
        SET sum = sum + i;
        SET i = i + 1;
    END WHILE;
    SELECT sum;
END //
DELIMITER ;

3. 刪除存儲過程

DROP PROCEDURE IF EXISTS p1;

4. 存儲過程 vs 函數 核心區別

特性存儲過程函數
返回值無返回值(通過 OUT 參數返回)必須有 RETURN 值
調用方式CALL proc()SELECT func() / 在 SQL 中直接使用
事務控制可執行 COMMIT/ROLLBACK不可執行事務控制
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved