2017-07-07 33 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