2017-07-07 7 views
1

私はすべてMySQL算術演算子(+, -, /, *)を1つの関数で作成して呼び出しようとしていますが、パラメータm1の問題が1つあります。私はすでに数値としてそれを宣言し、それはまだ私に同じエラーを示しているMySQL算術演算子を1つの関数で呼び出す?

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 平方メートル:=&平方メートル 秒:=&S 場合、S = '+' を 立方メートル:= M1 + M2ライン10 SQLステートメントで DBMS_OUTPUT.PUT_LINE(M1 || S || M」 ' (M1数値(10,4)、M2数値(10,4)、数値M3(10 Calculator'機能をCREATE 、4)、SのVARCHAR(20)) RETURNSのINTEGER BEGIN M1: =&m1 – Maged

答えて

2

Oracleを使用しようとする複数のケースを持っていますコード内のデータベース構文。

OracleとMySQLは2つの異なる製品であり、両方で同じ構文を使用することはできません。 MySQLでは

さらに進める前に、MySQL構文を検討する必要があります。

+0

Bill Karwin: あなたの明確で有益な答えをありがとう、ありがとうございます。私はMySQLで十分な経験がありません。私は、Oracle、SQL、およびMySQLの構文が似ているかもしれませんが。 この質問にお答えする時間は大変ありがとうございます。 – Maged

関連する問題