2016-01-12 79 views
0

我需要你的幫助。我應該創建一個函數來計算處方的處方成本。式應該是這樣的:MySQL:使用select語句+計算創建函數

醫學X劑量X天花板(duartion/24小時)

的功能的簽名是的價格:

處方費用(MNAME VARCHAR(100),劑量INT,持續時間時間)

DELIMITER $$ 
CREATE FUNCTION prescription_costs (mname varchar(100), dosage int, duration time) RETURNS INT 
BEGIN 
    DECLARE prescription_costs INT; 
    IF mname < 0 THEN 
     SET prescription_costs = 0; 
    ELSEIF dosage < 0 THEN 
     SET prescription_costs = 0; 
    ELSEIF duration < 0 THEN 
     SET prescription_costs = 0; 
    ELSE 
     SET prescription_costs = price*dosage*ceiling(duration/24); 
    END IF; 

    RETURN (prescription_costs); 
END; 
$$ 
DELIMITER ; 

所以,跑步,我會得到這個窗口後:

mname

代替使用藥物的價格,我必須使用藥物的名稱,它是指表中的價格。

表藥方是:

prescription

這意味着,如果我把藥名,價格應採取的計算,但我不知道怎麼樣。

我想我必須在創建函數語句中結合select語句。

BTW:英語不是我的母語!請原諒我的錯誤!

回答

0

您可以使用SELECT...INTO聲明,做這樣的事情:

SELECT your_price_column INTO price FROM your_table WHERE Name = mname 
IF price < 0 THEN 
    SET prescription_costs = 0; 
... 
+0

在代碼的哪個位置應該使用select ... into語句? – user2379123

+0

你想從你的表中獲得'mname'的'price',稍後在IF條件下使用它。因此,在開始使用'price'之前,請使用select ... into語句 – xto

0
CREATE FUNCTION prescription_costs (mname varchar(100), dosage int, duration time) RETURNS INT 
BEGIN 
    DECLARE prescription_costs INT; 
    DECLARE price decimal(8,2); 
    SELECT Price into price from medicine where Name=mname; 
    IF price < 0 THEN 
     SET prescription_costs = 0; 

這樣的..?