存储过程

Navicat中新建存储过程

打开具体某个库 -- 函数 -- 新建函数 -- 选择过程 -- 一路下一步

 具体存储过程如下

CREATE DEFINER=`root`@`%` PROCEDURE `a`()
BEGIN
    DECLARE i INT DEFAULT 1;    -- 定义变量 i,类型为整型,并赋予初始值为 1
    DECLARE p_roleName VARCHAR(20);    -- 定义变量 p-roleName,类型为字符串,长度20
    DECLARE p_delete INT;   -- 定义变量 p_delete,整型
WHILE i<10 DO   SET p_roleName = CONCAT("测试角色_", i); -- 将 "测试角色_" 与 变量 i 的值合并成一个字符串,并赋值为变量 p_roleName
     -- 判断 i 是否为2的倍数,是则将 p_delete 置为 0,否则为 1   
IF i%2=0 THEN   SET p_delete=0;   ELSE   SET p_delete=1;   END IF;      -- 执行SQL,在 VALUES 中替换成前面定义的变量   INSERT INTO adminuser_roles (`name`, `description`, `is_delete`, `create_time`)   VALUES (p_roleName, p_roleName, p_delete, '2022-06-20 22:16:34.000000');   SET i = i+1; END WHILE; END

编写关联数据的存储过程

一般操作下,用户操作需要写入数据库的表设计几张,他们之间存在先后关系,如写入用户下单积分,需要先往订单表插入记录,拿到orderId给写入积分纪录表使用。

下面,通过创建商品来作为例子

分析:

1、写入 sku 记录(goods表),拿到 goods_id

2、写入商品(products),关联 goods_idCREATE DEFINER=`root`@`%` PROCEDURE `create product`()

CREATE DEFINER=`root`@`%` PROCEDURE `create product`()
BEGIN
  DECLARE i INT DEFAULT 1;
    DECLARE p_goodsName VARCHAR(128);
    DECLARE p_sn VARCHAR(32); 
    DECLARE p_brand INT;
    DECLARE p_catId INT;
    DECLARE p_goodsId INT;
    DECLARE p_goodsStore INT;
    DECLARE p_goodsPrice FLOAT ;
    WHILE i<3 DO
        -- 指定范围 m-n
        -- SELECT FLOOR(RAND()*(n-m) + m);
        -- 下面指定范围 1-95
        SET p_brand = FLOOR(RAND()*94+1);
        SET p_catId = FLOOR(RAND()*92+1);
        SET p_goodsName = CONCAT("旺旺挑豆随手包海苔花生45g","_测试商品_",i);
        SET p_sn = CONCAT("0000567840",i);
        INSERT INTO `javamall`.`es_goods` (`name`, `sn`, `brand_id`, `cat_id`, `type_id`, `goods_type`, `unit`, `weight`, `market_enable`, `brief`, `intro`, `price`, `cost`, `mktprice`, `params`, `specs`, `have_spec`, `adjuncts`, `create_time`, `last_modify`, `view_count`, `buy_count`, `disabled`, `store`, `point`, `page_title`, `meta_keywords`, `meta_description`, `p20`, `p19`, `p18`, `p17`, `p16`, `p15`, `p14`, `p13`, `p12`, `p11`, `p10`, `p9`, `p8`, `p7`, `p6`, `p5`, `p4`, `p3`, `p2`, `p1`, `sord`, `have_field`, `grade`, `goods_comment`, `is_pack`, `thumbnail`, `big`, `small`, `original`) 
        VALUES (p_goodsName, p_sn, p_brand, p_catId, 1, 'normal', NULL, 45.00, 1, NULL, '<p>\n    <font color=\"#800000\" face=\"黑体\" size=\"4\"><strong><font color=\"#000000\" face=\"Arial\" size=\"3\" style=\"background-color: #c0c0c0\">&nbsp;</font>商品介绍</strong></font>&nbsp; <font color=\"#c0c0c0\" size=\"4\">product</font><br />\n    <font color=\"#000000\" face=\"宋体\" size=\"2\">与日本小林制果技术合作,原料经过先进的计算机筛选设备严选,颗颗饱满香脆。<br />\n    工厂通过HACCP,ISO9000认证;生产全过程经过严密管控!<br />\n    不含防腐剂、蓬松剂,营养又健康!</font></p>\n<p>\n    <font color=\"#800000\" face=\"黑体\" size=\"4\"><strong><font color=\"#000000\" face=\"Arial\" size=\"3\" style=\"background-color: #c0c0c0\">&nbsp;</font>品牌介绍</strong></font>&nbsp; <font color=\"#c0c0c0\" size=\"4\">Brand</font><br />\n    <font color=\"#000000\" face=\"宋体\" size=\"2\">旺旺公司之业务可追溯至台湾宜兰食品工业股份有限公司,旺旺公司于 1992年正式投资大陆市场。旺旺秉持着&ldquo;缘、自信、大团结&rdquo;的经营理念,立志成为&ldquo;综合消费食品王国&rdquo;,向着&ldquo;中国第一,世界第一&rdquo;的目标不断前进。   旺旺自投资大陆市场以来,足迹遍布中国大陆、台湾、香港、新加坡、日本。如今的旺旺已经发展成为一个业务多元化的综合性企业,除了经营食品行业外,旺 旺还涉足医疗服务、餐饮连锁、农业、酒店、房地产等领域。</font></p>\n<p>\n    <font color=\"#000000\" face=\"宋体\" size=\"2\"><strong>温馨提示:</strong></font></p>\n<p>\n    <font color=\"#000000\" face=\"宋体\" size=\"2\">由于部分商品包装更换较为频繁,因此您收到的货物有可能与图片不完全一致,请您以收到的商品实物为准,同时我们会尽量做到及时更新,由此给您带来不便请多多谅解,谢谢!</font></p>\n', 2.70, 2.30, 3.00, '[{\"name\":\"规格参数\",\"paramList\":[{\"name\":\"规格\",\"value\":\"45g/袋\",\"valueList\":[]},{\"name\":\"重量\",\"value\":\"45g\",\"valueList\":[]},{\"name\":\"产品标准号\",\"value\":\"\",\"valueList\":[]},{\"name\":\"生产日期\",\"value\":\"\",\"valueList\":[]},{\"name\":\"保质期\",\"value\":\"270天\",\"valueList\":[]},{\"name\":\"储存方法\",\"value\":\"\\t存放于阴凉干爽处,避免阳光直射\",\"valueList\":[]},{\"name\":\"配料\",\"value\":\"花生、食用盐、海苔等\",\"valueList\":[]},{\"name\":\"产地\",\"value\":\"湖南长沙\",\"valueList\":[]},{\"name\":\"厂家\",\"value\":\"\",\"valueList\":[]}],\"paramNum\":9}]', '[{\"cost\":2.3,\"goodsLvPrices\":[],\"goods_id\":9,\"name\":\"旺旺挑豆随手包海苔花生45g/袋\",\"price\":2.7,\"product_id\":9,\"sn\":\"0000567840\",\"specList\":[],\"specs\":\"\",\"specsvIdJson\":\"[]\",\"store\":0,\"weight\":45}]', NULL, NULL, 1329893200, 1329893200, 0, 0, 0, 0, 0, '旺旺 挑豆随手包海苔花生45g/袋', '旺旺 挑豆随手包海苔花生45g/袋', '旺旺 挑豆随手包海苔花生45g/袋', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '1', '湖南长沙', 0, 0, 0, NULL, NULL, 'http://static.v4.javamall.com.cn/attachment/goods/201202221444355358_thumbnail.jpg', 'http://static.v4.javamall.com.cn/attachment/goods/201202221444355358_big.jpg', 'http://static.v4.javamall.com.cn/attachment/goods/201202221444355358_small.jpg', 'http://static.v4.javamall.com.cn/attachment/goods/201202221444355358.jpg');
        
        SET p_goodsId = LAST_INSERT_ID();    -- 获取最近写入数据库非记录ID
        SET p_goodsStore = FLOOR(RAND()*90+10);
        INSERT INTO `javamall`.`es_product` (`goods_id`, `name`, `sn`, `store`, `price`, `specs`, `cost`, `weight`)
        VALUES (p_goodsId, p_goodsName, p_sn, p_goodsStore, 2.70, NULL, 2.30, 45.00);
        SET i = i+1;
    END WHILE;
END

 

posted @ 2022-06-22 12:16  DeyouKong  阅读(105)  评论(0编辑  收藏  举报