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 に答える