0

我创建了一个存储过程并尝试在事件中调用它,因为我想每 1 分钟执行一次存储过程。但我找不到任何结果。

insert_update_supplier这是我写的存储过程

    DELIMITER $$

    USE `eegpap`$$

    DROP PROCEDURE IF EXISTS `insert_update_supplier`$$

     CREATE DEFINER=`eegpap`@`%` PROCEDURE `insert_update_supplier`()
     BEGIN

     SELECT COUNT(*) AS col_no1, Invoice_Date AS invoicedate, No_of_Cases AS d_ncases, No_of_Bottles AS d_nbottles, Product_Code AS d_pcode  FROM depot_sales__c WHERE Supplier_Code IN (SELECT Supplier FROM advance_payment_request__c);
     SELECT From_Date AS s_fromdate FROM supplier_payment__c;

     IF col_no1>0 THEN
       IF(CURDATE()-invoicedate>=45) THEN
         IF(s_fromdate>invoicedate) THEN 
            UPDATE supplier_payment__c SET From_Date=invoicedate;
         END IF;
         IF(d_nbottles!=NULL AND d_nbottles>0) THEN 
            UPDATE supplier_payment__c SET No_of_Loose_Cases=(No_of_Loose_Cases+1) AND No_of_Loose_Bottles=(No_of_Loose_Bottles+d_nbottles);
         END IF;
         UPDATE supplier_payment__c SET No_of_Loose_Cases=(No_of_Loose_Cases+1) AND No_of_Cases=(No_of_Cases+d_ncases) AND Cost_Value=(d_ncases*(SELECT Landed_Cost FROM product2 WHERE Supplier_Code=d_pcode));
        END IF;
      END IF;
   END$$

  DELIMITER ;

这是活动supplier_event

   CREATE EVENT supplier_event
ON SCHEDULE EVERY 5 SECOND
DO
  CALL insert_update_supplier();

我不明白我在哪里犯了错误或问题出在哪里。或者,如果除了存储过程之外还有其他选择,请提出建议。

请一些帮助我。提前致谢

4

1 回答 1

0

这个说法:

    SELECT COUNT(*) AS col_no1, Invoice_Date AS invoicedate, No_of_Cases AS d_ncases, No_of_Bottles AS d_nbottles, Product_Code AS d_pcode
    FROM depot_sales__c
    WHERE Supplier_Code IN (SELECT Supplier FROM advance_payment_request__c);

没有做你所期望的。我想你打算这样:

    SELECT col_no1 := COUNT(*),
           invoicedate := Invoice_Date,
           d_ncases := No_of_Case,
           d_nbottles := No_of_Bottles,
           d_pcode := Product_Code
    FROM depot_sales__c
    WHERE Supplier_Code IN (SELECT Supplier FROM advance_payment_request__c);

您还应该在代码块中声明您正在使用的变量。

于 2015-10-10T16:32:37.713 回答