簡體   English   中英

將值分配給SELECT查詢中的變量

[英]Assign values to variables inside a SELECT query

我有一個復雜的MySQL觸發器,此刻我想簡化一下。 以下是觸發器。

CREATE TRIGGER `Ongoing_Portfolio_AINS` AFTER INSERT ON `Ongoing_Portfolio` FOR EACH ROW
BEGIN
    UPDATE Portfolio
    SET Invest_Amount = New.Investment_Value,
    Cash_Value = New.Cash_Value,
    Date_Of_Last_Update = New.Updated_Date
    WHERE idPortfolio = New.idPortfolio;

    INSERT INTO Ongoing_Fees (currentDate, Gross_Fee, Insurance_Fee, Submit_Fee)
    SELECT current_timestamp,
    New.Gross_Fee,
    (New.Gross_Fee)*(p.E_Fee/100),
    ((New.Gross_Fee)*(p.E_Fee/100))-(p.s_Fee/100)
    FROM Portfolio p
    WHERE p.idPortfolio = New.idPortfolio;
END;

您在這里看到的只是一部分,還有更多。

您可以看到以下幾行:

  1. (New.Gross_Fee)*(p.i_Fee/100)
  2. ((New.Gross_Fee)*(p.i_Fee/100))-(ps/100)

其實,

  1. Insurance_FeeNew.Gross_Fee百分比金額
  2. Submit_FeeInsurance_Fee- (p.s_Fee/100)

我想為此目的引入變量,而不是編寫這些冗長的計算。 因此變量將類似於

  1. _InsuranceFee := (New.Gross_Fee)*(p.i_Fee/100)
  2. _SubmitFee := _InsuranceFee - (p.s_Fee/100)

這種工作會縮短計算時間,而且很容易閱讀。 但是,正如您所看到的,我的“插入”查詢實際上是在使用Select查詢。 這是因為所有“百分比”值都來自表Portfolio (別名p ),所以如何在Select查詢中為變量賦值並將其直接插入數據庫?

否則,可以通過其他任何方式將值分配給變量,以便只在選擇查詢中使用變量?

您是否嘗試過僅使用局部變量?

declare `_InsuranceFee`, `_SubmitFee` decimal(10, 4);

INSERT INTO Ongoing_Fees (currentDate, Gross_Fee, Insurance_Fee, Submit_Fee)
    SELECT current_timestamp, New.Gross_Fee,
           `_InsuranceFee` := (New.Gross_Fee)*(p.E_Fee/100),
           `_SubmitFee` := ((New.Gross_Fee)*(p.E_Fee/100))-(p.s_Fee/100)
    FROM Portfolio p
    WHERE p.idPortfolio = New.idPortfolio;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM