案例所涉及到的表如下:
CREATE TABLE `t_goods` (
`g_id` varchar(20) NOT NULL COMMENT '商品編号',
`g_name` varchar(30) DEFAULT NULL COMMENT '商品名稱',
`g_price` float DEFAULT NULL COMMENT '商品價格',
`g_discount` float DEFAULT NULL COMMENT '折扣價格',
`g_star` int(11) DEFAULT NULL COMMENT '顧客評分(1:一星2:二星依次類推)',
`g_author` varchar(10) DEFAULT NULL COMMENT '作者',
`g_press` varchar(50) DEFAULT NULL COMMENT '出版社',
`g_publish_time` varchar(12) DEFAULT NULL COMMENT '出版時間(格式2019-12-12)',
`g_img_path` varchar(100) DEFAULT NULL COMMENT '商品圖片所在路徑',
`g_desc` varchar(500) DEFAULT NULL COMMENT '内容概述',
`g_number` int(11) DEFAULT NULL COMMENT '商品的數量',
PRIMARY KEY (`g_id`)
) ENGINE=MyISAM DEFAULT CHARSET=gb2312;
部分參考數據如下:
一、MySQL存儲過程的創建
建立個存儲過程,将商品編号g_id=’ hadoop_001’這本書的價格加10元,并顯示結果。實現過程如下:
DELIMITER//
CREATE PROCEDURE add_price()
BEGIN
UPDATE t_goods SET g_price = g_price 10 WHERE g_id='hadoop_001' ;
SELECT * FROM t_goods;
END;
//
CALL add_price()
二、MySQL存儲過程的參數
分别建立個帶參數in、out、inout的存儲過程:
1、帶in的參數
DELIMITER//
CREATE PROCEDURE demo_in(IN p_in INT)
BEGIN
SELECT p_in;
SET p_in=2;
SELECT p_in;
END;
//
SET @p_in=1
CALL demo_in(@p_in)
CALL demo_in(100)
2、帶out參數
DELIMITER//
CREATE PROCEDURE demo_out(OUT p_out INT)
BEGIN
SELECT p_out;
SET p_out=2;
SELECT p_out;
END;
//
SET @p_out=1
CALL demo_out(@p_out) /*未被定義,返回為null */
SELECT @p_out; /*返回為2 */
3、帶inout
DELIMITER//
CREATE PROCEDURE demo_inout(INOUT p_inout INT)
BEGIN
SELECT p_inout;
SET p_inout=2;
SELECT p_inout;
END;
//
DELIMITER
SET @p_inout=1
CALL demo_inout(@p_inout)
SELECT @p_inout;
三、MySQL存儲過程的選擇結構
使用選擇結構判斷如果商品編号是hadoop_001,則輸出其商品名稱。實現過程參考如下:
DELIMITER//
CREATE PROCEDURE goods_demo1()
BEGIN
DECLARE v1 VARCHAR(20);
DECLARE v2 VARCHAR(20);
SELECT g_id,g_name INTO v1,v2 FROM t_goods WHERE g_id='hadoop_001';
IF v1='hadoop_001' THEN
SELECT v2;
END IF;
END;
//
CALL goods_demo1()
四、MySQL存儲過程的循環結構練習
使用循環結構實現1 2 3 … 100 = ? ,實現過程如下:
DELIMITER //
CREATE PROCEDURE while_demo()
BEGIN
DECLARE i INT;
DECLARE _sum INT;
SET i=0;
SET _sum=0;
WHILE i<=100 DO
SET _sum=_sum i;
SET i=i 1;
END WHILE;
SELECT _sum;
END ;
//
CALL while_demo()
結果為:
五、MySQL存儲過程的CASE分支語句
建立個存儲過程,參數是訂單狀态pay_status ,其值為整數類型,使用case語句判斷 pay_status的值,然後輸出相應的結果。規則如下:
(1)pay_status = 0 ,則輸出“微信支付”
(2)pay_status = 1 ,則輸出“支付寶支付”
(3)pay_status = 0 ,則輸出“銀行卡支付”
DELIMITER //
CREATE PROCEDURE case_demo (IN pay_status INT)
BEGIN
DECLARE i INT;
SET i=pay_status;
CASE i
WHEN 0 THEN
SELECT '微信支付';
WHEN 1 THEN
SELECT '支付寶支付';
ELSE
SELECT '銀行卡支付';
END CASE;
END ;
//
CALL case_demo(1)
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!