之前一直用的是Sql Server數據庫,最近偶然機會接觸到mysql。這里總結了關於mysql 存儲過程、視圖的“創建、調用、刪除”示例
=================================存儲過程==================================
1、帶參數的存儲過程
/*創建存儲過程*/
DELIMITER $$ /*為了避免沖突,首先用"DELIMITER &&"將MySQL的結束符設置為&&*/
USE `DataName`$$ /*DataName-->數據庫名*/
DROP PROCEDURE IF EXISTS `aa`$$ /*判斷存儲過程是否存在(存在則刪除)*/
CREATE DEFINER=`root`@`%` PROCEDURE `aa`(str_id VARCHAR(34))/*str_id VARCHAR(34)-->參數*/
BEGIN
SELECT * FROM tj_archive WHERE id=str_id; /*執行的Sql腳本*/
END$$
DELIMITER; /*最后再用"DELIMITER ;"來將結束符恢復成分號*/
/*查看存儲過程*/
CALL `aa`('D1608220023')
/*刪除存儲過程*/
DROP PROCEDURE `aa`
2、帶IF條件判斷的存儲過程
DELIMITER $$
USE `iu`$$
DROP PROCEDURE IF EXISTS `bb`$$
CREATE DEFINER=`root`@`%` PROCEDURE `bb`(Xb VARCHAR(6)) -- 創建
BEGIN
IF (Xb='男') THEN SET Xb='1';END IF;
IF (Xb='女') THEN SET Xb='0';END IF;
SELECT * FROM tj_archive WHERE sex=Xb;
END$$
DELIMITER;
CALL `bb`('女') -- 調用
DROP PROCEDURE `bb` -- 刪除
3、使用 SELECT... INTO 給變量賦值
DELIMITER $$
USE `iu`$$
DROP PROCEDURE IF EXISTS `cc`$$
CREATE DEFINER=`root`@`%` PROCEDURE `cc`()
BEGIN
DECLARE RYDAID VARCHAR(34);
SELECT CONCAT('D',CAST((CAST(SUBSTRING(MAX(id),2) AS UNSIGNED)) AS CHAR)) INTO RYDAID FROM tj_archive;
SELECT * FROM tj_archive WHERE id=RYDAID;
END$$
DELIMITER;
CALL `cc`(); -- 調用
DROP PROCEDURE `cc`; -- 刪除
=======================================視圖==================================
-- 創建視圖
CREATE VIEW MyView AS
SELECT
CASE sex -- 適用性別 0:男女通用 1:男 2:女
WHEN sex='男' THEN 1 -- 適用 男
WHEN sex='女' THEN 2 -- 適用 女
WHEN sex='通用' THEN 0 -- 男女通用
END AS XB
FROM MyTable -- 表
-- where -- 過濾條件
select * from MyView -- 查看視圖