首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL错误1193:未知系统变量“discount_advanced_rules”

MySQL错误1193:未知系统变量“discount_advanced_rules”
EN

Stack Overflow用户
提问于 2020-10-12 04:56:10
回答 1查看 1.4K关注 0票数 1

所以我有三张桌子,我得做一张这样的商店手续

代码语言:javascript
运行
复制
CREATE DEFINER=`brambang`@`%` PROCEDURE `create_discount_campaign2`(
    IN discount_campaign_discount_type_id CHAR(22),
    IN discount_campaign_product_id varchar(100),
    IN discount_campaign_marketing_target_id INT,
    IN discount_campaign_max_use_per_user INT,
    IN discount_campaign_discount_code varchar(100),
    IN discout_campaign_discount_amount decimal(10,0),
    IN discount_campaign_start_date datetime,
    IN discount_campaign_end_date datetime,
    IN discount_campaign_min_order_quantity INT,
    IN discount_campaign_min_order_price decimal(10,0),
    IN discount_campaign_discount_quota INT,
    IN discount_campaign_min_product_varian INT,
    IN discount_campaign_apply_all_product INT,
    IN discount_campaign_product_product_id INT,
    IN discount_campaign_product_createdby INT,
    IN discount_campaign_product_updatedby INT,
    IN discount_campaign_product_category_id VARCHAR(100),
    IN discount_campaign_advanced_discount_advanced_rules_id INT,
    IN discount_campaign_advanced_value varchar(255),
    IN discount_campaign_advanced_status TINYINT
)
    MODIFIES SQL DATA
BEGIN
    DECLARE last_id BIGINT;

    INSERT INTO discount_campaigns
    SET
      discount_type_id = discount_campaign_discount_type_id,
      product_id = discount_campaign_product_id,
      marketing_target_id = discount_campaign_marketing_target_id,
      max_use_per_user = discount_campaign_max_use_per_user,
      discount_code = discount_campaign_discount_code,
      discount_amount = discout_campaign_discount_amount,
      start_date = discount_campaign_start_date,
      end_date = discount_campaign_end_date,
      min_order_quantity = discount_campaign_min_order_quantity,
      min_order_price = discount_campaign_min_order_price,
      discount_quota = discount_campaign_discount_quota,
      min_product_variant = discount_campaign_min_product_varian,
      apply_all_products = discount_campaign_apply_all_product,
      createdAt = NOW(),
      updatedAt = NOW();

    IF (discount_campaign_apply_all_product = 0) THEN
        SET last_id = LAST_INSERT_ID();
        INSERT INTO discount_campaign_product (discount_campaign_id,
          product_id, active, createdby, updatedby, createdAt, updatedAt)
        SELECT last_id, c.product_id, case when  
        find_in_set (c.product_id,  discount_campaign_product_product_id) then 0 else 1 end
          discount_campaign_product_createdby, NULL, NOW(), NULL
        FROM product_categories AS c
        WHERE FIND_IN_SET(c.category_id, discount_campaign_product_category_id)
          AND c.status=1;
    END IF;

    SET 
     discount_advanced_rules_id = discount_campaign_advanced_discount_advanced_rules_id,
     value = discount_campaign_advanced_value, 
     status = discount_campaign_advanced_status;
    IF (discount_campaign_advanced_discount_advanced_rules_id = 0) THEN
    INSERT INTO discount_campaign_advanced
        SET 
            discount_campaign_id = last_id,
            discount_advance_rules_id = discount_campaign_advanced_discount_advanced_rules_id,
            value = discount_campaign_advanced_value,
            createdAt = NOW(),
            status = discount_campaign_advanced_status;
                END IF;
    
END

问题在本部分的最后一部分。

代码语言:javascript
运行
复制
 SET 
     discount_advanced_rules_id = discount_campaign_advanced_discount_advanced_rules_id,
     value = discount_campaign_advanced_value, 
     status = discount_campaign_advanced_status;
    IF (discount_campaign_advanced_discount_advanced_rules_id = 0) THEN
    INSERT INTO discount_campaign_advanced
        SET 
            discount_campaign_id = last_id,
            discount_advance_rules_id = discount_campaign_advanced_discount_advanced_rules_id,
            value = discount_campaign_advanced_value,
            createdAt = NOW(),
            status = discount_campaign_advanced_status;
                END IF;
    
END

当我运行它,它似乎是Error 1193: Unknown system variable 'discount_advanced_rules_id' SQL statement,我错过了什么部分?

这个存储过程包含三个已经连接的表,但是在最后一部分,逻辑是这样的,如果discount_advanced_rules_id是0,那么数据必须插入到discount_campaign_advanced表中,否则,如果没有,那么就不插入到该表。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-12 07:44:06

代码语言:javascript
运行
复制
discount_advanced_rules_id 

不在您的代码中声明。

您可以在开始之后声明它:

代码语言:javascript
运行
复制
SET @discount_advanced_rules_id = 0;

然后你可以用它:

代码语言:javascript
运行
复制
SET 
     @discount_advanced_rules_id = discount_campaign_advanced_discount_advanced_rules_id,
     value = discount_campaign_advanced_value, 
     status = discount_campaign_advanced_status;

对于不从输入开始的每个变量也是一样的。

您需要在变量的名称之前使用@。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64311896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档