Mysql存儲過程入門

語法

CREATE PROCEDURE  過程名([[IN|OUT|INOUT] 參數名 數據類型[,[IN|OUT|INOUT] 參數名 數據類型…]]) [特性 ...] 過程體

DELIMITER //
  CREATE PROCEDURE myproc(OUT s int)
    BEGIN
      SELECT COUNT(*) INTO s FROM students;
    END
    //
DELIMITER ;

MySQL默認以";"爲分隔符,如果沒有聲明分割符,則編譯器會把存儲過程當成SQL語句進行處理,因此編譯過程會報錯,所以要事先用“DELIMITER //”聲明當前段分隔符,讓編譯器把兩個"//"之間的內容當做存儲過程的代碼,不會執行這些代碼;“DELIMITER ;”的意爲把分隔符還原。

IN|OUT|INOUT參數:

IN:輸入值OUT:可返回值INOUT:輸入輸入值

變量定義

   語法:SET 變量名 = 變量值 [,變量名= 變量值 ...]

調用存儲過程

    CALL 函數名(參數);

刪除存儲過程

    DROP PROCEDURE 函數名;

示例:

-- 初始化用戶存儲過程
DELIMITER //
	create procedure delete_user(in p_in varchar(11)) 
		BEGIN
			delete from t_customer_coupons where customer_phone = p_in;
			delete from t_customer where PHONE = p_in;
		END //
DELIMITER ;

條件語句

     IF-THEN-ELSE語句

DROP PROCEDURE IF EXISTS proc3;
DELIMITER //
CREATE PROCEDURE proc3(IN parameter int)
  BEGIN
    DECLARE var int;
    SET var=parameter+1;
    IF var=0 THEN
      INSERT INTO t VALUES (17);
    END IF ;
    IF parameter=0 THEN
      UPDATE t SET s1=s1+1;
    ELSE
      UPDATE t SET s1=s1+2;
    END IF ;
  END ;
  //
DELIMITER ;

CASE-WHEN-THEN-ELSE語句

DELIMITER //
  CREATE PROCEDURE proc4 (IN parameter INT)
    BEGIN
      DECLARE var INT;
      SET var=parameter+1;
      CASE var
        WHEN 0 THEN
          INSERT INTO t VALUES (17);
        WHEN 1 THEN
          INSERT INTO t VALUES (18);
        ELSE
          INSERT INTO t VALUES (19);
      END CASE ;
    END ;
  //
DELIMITER ;

WHILE-DO…END-WHILE

DELIMITER //
  CREATE PROCEDURE proc5()
    BEGIN
      DECLARE var INT;
      SET var=0;
      WHILE var<6 DO
        INSERT INTO t VALUES (var);
        SET var=var+1;
      END WHILE ;
    END;
  //
DELIMITER ;


mysql詳細介紹請看該文章:https://www.cnblogs.com/mark-chan/p/5384139.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章