2011-09-15 31 views
3

您好,我需要MySQL中嵌套if else語句的幫助。 請確認下面的代碼是否相同? C代碼是我想在MySQL中完成的。我沒有語法錯誤。但似乎我沒有得到正確的結果。MySQL幫助程序嵌套如果ELSE語句

MySQL的存儲過程

IF top10_rank <= 10 AND top100_rank <=10 THEN SET temp_rank = 10; 
ELSE SET temp_rank = 100; 
END IF; 


IF temp_rank = 10 THEN 
    IF top10_rank_date > top100_rank_date THEN SET rank = top10_rank; 
    ELSE SET rank = top100_rank; 
    END IF; 
ELSEIF temp_rank = 100 THEN SET rank = top100_rank; 
ELSE SET rank = 0; 
END IF; 

C代碼

if(top10_rank <= 10 && top100_rank <=10) 
{ 
    temp_rank = 10; 
} 
else 
{ 
    temp_rank = 100; 
} 

if(temp_rank == 10) 
{ 
    if(top10_rank_date > top100_rank_date) 
    { 
     rank = top10_rank 
    } 
    else 
    { 
     rank = top100_rank 
    } 
} 
else if(temp_rank == 100) 
{ 
    rank = top100_rank; 
} 
else 
{ 
    rank = 0; 
} 
+0

會發生什麼差異?當您輸入C代碼中的內容時,以及輸出不同時,是否與MySQL代碼中的內容相同? – Dair

+0

我不知道,我只是不知道如何調試存儲過程代碼。但是我沒有得到我期望在存儲過程中發生的事情,所以我猜這就是這部分。但是,如果上面的代碼是相同的,那麼我正在查看代碼的錯誤部分。 –

+0

爲什麼在這個世界上,你是否試圖在存儲過程中編寫這樣的程序代碼?把它寫在C所在的地方。 – JohnFx

回答

1

似乎件是等價的無關於這樣的事情整數的尺寸(?可以是浮動)字段和處理SQL中的NULL值。 代碼看起來並不好:

1)此代碼無法訪問:

else 
{ 
    rank = 0; 
} 

2)它可以縮短 - temp_rank會內聯

3)也許你需要使用此功能選擇,它可以用CASE操作符重寫 - 使呼叫更有效

4)爲了檢測問題,將C和SQL段包裝在函數中,並指定哪些輸入參數結果不同。