MYSQL存储过程实践

本文介绍了一种通过存储过程将电商平台的商品信息归档到临时表的方法。使用了包括SUBSTRING、REPLACE等函数来处理数据,并通过游标遍历记录进行数据插入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

归档电商信息到临时表
使用函数说明:
SUBSTRING:
格式:
substring(str, pos) 
substring(str, pos, length)
说明:
substring(被截取字段,从第几位开始截取) 
substring(被截取字段,从第几位开始截取,截取长度)
REPLACE:
格式:
replace(object,search,replace)
说明:
用replace替换object的search
CHAR_LENGTH:
格式:
CHAR_LENGTH(str)
说明:
返回值为字符串str 的长度,长度的单位为字符。
LTRIM:
格式:
LTRIM(str)
说明:
去除字符串左边的空格
RTRIM:
格式:
RTRIM(str)
说明:

去除字符串右边的空格


临时表结构
CREATE TABLE `iwebshop_goods_mark` (
  `ITEMS` varchar(50) NOT NULL COMMENT '品目', 
  `BRAND` varchar(255) NOT NULL COMMENT '品牌',
  `MODEL` varchar(255) NOT NULL COMMENT '产品型号',
  `QUOTATION_PRICE` float(10,2) NOT NULL COMMENT '政采报价',
  `MARKEI_SKU` int(11) NOT NULL COMMENT '电商SKU',
  `MARKET_PRICE` float(10,2) NOT NULL COMMENT '电商价格',
) ENGINE=InnoDB DEFAULT CHARSET=utf8

处理的存储过程
CREATE PROCEDURE SPLIT()
BEGIN
  --品目:ITEMS
  DECLARE ITEMS varchar(50);
  --品牌:BRAND
  DECLARE BRAND varchar(255);
  --产品型号:MODEL
  DECLARE MODEL varchar(255);
  --政采报价:QUOTATION_PRICE
  DECLARE QUOTATION_PRICE float(10,2);
  --电商SKU:MARKEI_SKU
  DECLARE MARKEI_SKU int(11);
  --电商价格:MARKET_PRICE
  DECLARE MARKET_PRICE float(10,2);
  --状态属性
  DECLARE DONE VARCHAR(10);
  
  DECLARE BRANDCURSOR CURSOR FOR SELECT 
    b.`name` as ITEMS, 
c.`name` as BRAND, 
SUBSTRING(REPLACE(a.name,' ',''),CHAR_LENGTH(LTRIM(RTRIM(c.name))) + 1) AS MODEL, 
a.market_price AS QUOTATION_PRICE, 
a.id AS MARKEI_SKU,  
(a.market_price * 0.98) AS MARKET_PRICE 
FROM 
  iwebshop_goods a, 
  iwebshop_category b, 
  iwebshop_brand c 
WHERE 
  a.model_id = b.model_id 
  AND 
  a.brand_id = c.id;  
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET DONE = TRUE;
  OPEN BRANDCURSOR;
  read_loop: LOOP
    -- 提取游标里的数据
    FETCH BRANDCURSOR INTO ITEMS, BRAND, MODEL, QUOTATION_PRICE, MARKEI_SKU, MARKET_PRICE;
    -- 声明结束
    IF DONE THEN
      LEAVE read_loop;
    END IF;
--插入数据库数据
    INSERT INTO iwebshop_goods_mark(ITEMS, BRAND, MODEL, QUOTATION_PRICE, MARKEI_SKU, MARKET_PRICE) VALUES(ITEMS, BRAND, MODEL, QUOTATION_PRICE, MARKEI_SKU, MARKET_PRICE);
  END LOOP;
END;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值