2015-05-21 64 views
1

我試圖在MySQL中條件爲真時打印某些內容。 這是我的代碼:不能在MySQL中使用IF/ELSE和PRINT語句

BEGIN 

UPDATE president 
INNER JOIN election ON president.pres_name = election.candidate 
SET yrs_serv = yrs_serv + 4 
WHERE election.winner_loser_indic = 'W' 
AND election.election_year = (SELECT MAX(election_year) FROM election) 

BEGIN 
IF (yrs_serv > 4) THEN BEGIN PRINT "warning" 
END 
END 

END 

當我運行此我得到這個錯誤。

MySQL的:#1064 - 你在你的SQL語法錯誤;檢查對應於你的MySQL服務器版本正確的語法使用附近的手冊「BEGIN IF(yrs_serv> 4)然後開始打印‘警告’END END END」在第7行

這是一個過程內。我無法弄清楚這一點。如果我不嘗試使用IF語句,代碼將起作用。

+1

這似乎是一個SQL相關的問題。不是PHP –

+0

對不起,錯誤。固定標籤。 – RedZerg

+0

@RedZerg:你在哪裏寫這些陳述?直接在MySQL客戶端?或者這個代碼是SP的一部分? –

回答

1

首先你缺少;update的末尾,那麼Begin不需要IF。隨後的IF端通過END IF;做只有一個Begin .... End需要 嘗試下面的代碼

BEGIN 

UPDATE president 
INNER JOIN election ON president.pres_name = election.candidate 
SET yrs_serv = yrs_serv + 4 
WHERE election.winner_loser_indic = 'W' 
AND election.election_year = (SELECT MAX(election_year) FROM election); 


IF (yrs_serv > 4) THEN 
Select "warning"; // PRINT "warning" can be achived by Select 
END IF; 

END; 
+0

謝謝!這工作。 – RedZerg

+0

@RedZerg很高興幫助.. – Sachu