首页
/
每日頭條
/
生活
/
mysql存儲過程與存儲函數
mysql存儲過程與存儲函數
更新时间:2024-04-28 16:12:17

案例所涉及到的表如下:

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存儲過程與存儲函數(MySQL存儲過程的使用總結)1

一、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存儲過程與存儲函數(MySQL存儲過程的使用總結)2

五、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)

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
Copyright 2023-2024 - www.tftnews.com All Rights Reserved