2017-07-07 70 views
1

我一直在努力使所有MySQL算術運算符(+, -, /, *)在一個函數中,但我面臨一個問題與參數m1。我理解的是說的錯誤消息:在一個函數中調用MySQL算術運算符?

Syntax error: unexpected 'm1' (Identifier)? 

我已經聲明它作爲一個數字,它仍呈現我同樣的錯誤。有沒有人有任何想法如何解決這個問題,併成功地在MySQL Workbench 5.7

此運行此功能的代碼,且誤差在5日線:

CREATE FUNCTION `Calculator` 

(m1 numeric (10,4), m2 numeric (10,4), m3 numeric (10,4), s varchar (20)) 

RETURNS INTEGER 


BEGIN 

m1:=&m1 

m2:=&m2 

s:=&s 

if s = '+' then 

m3:=m1+m2 

dbms_output.put_line(m1||s||m2||'='||m3) 

else if s = '-' then 

m3:=m1-m2 

dbms_output.put_line(m1||s||m2||'='||m3) 

else if s = '*' then 

m3:=m1*m2 

dbms_output.put_line(m1||s||m2||'='||m3) 

else if s = '/' then 

m3:=m1/m2 

dbms_output.put_line(m1||s||m2||'='||m3); 

end if 

    exception 

    when zero_divide then 

    dbms_output.put_line('cant divide by zero') 

end 

/



RETURN 1; 
END 
+0

操作失敗:將SQL腳本應用於數據庫時發生錯誤。 錯誤1064:您的SQL語法有錯誤;檢查對應於你的MySQL服務器版本使用附近的正確語法手冊「:= M1 M2:= M2 S:=&S 如果s = '+' 然後 M3:= M1 + M2 DBMS_OUTPUT.PUT_LINE(M1 || ||小號M」在管路10 SQL語句: CREATE FUNCTION'Calculator' (M1數字(10,4),平方米數字(10,4),立方米數字(10 ,4),s varchar(20)) RETURNS INTEGER BEGIN m1: =&m1 – Maged

回答

2

你試圖使用Oracle多個案例數據庫語法在你的代碼中。

Oracle和MySQL是兩種不同的產品,不能對兩者使用相同的語法。

在MySQL:

你應該學習MySQL語法,然後再繼續。

+0

Bill Karwin: 非常感謝您提供明確且有用的答案,而且您對我沒有足夠的MySQL經驗。我認爲Oracle,SQL和MySQL可以有類似的語法。 您的時間來回答這個問題,非常感謝。 – Maged