我一直在尝试在一个函数中创建和调用所有MySQL
算术运算符(+, -,/, *)
,但我遇到了一个问题参数m1
。我收到一条错误消息:
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
最佳答案
您有多种尝试在代码中使用 Oracle 数据库语法的情况。
Oracle 和 MySQL 是两种不同的产品,不能对两者使用相同的语法。
在 MySQL 中:
您必须使用
SET
来执行赋值语句。 https://dev.mysql.com/doc/refman/5.7/en/set-variable.html您不需要
:=
,其中=
足以在 MySQL 中进行分配。它没有什么坏处,但它是您尝试使用 Oracle 语法的另一个线索。Exception
是 Oracle 语法,而不是 MySQL 语法。您可能打算使用 SIGNAL 在 MySQL 中引发异常。 https://dev.mysql.com/doc/refman/5.7/en/signal.htmldbms_output.put_line()
适用于 Oracle 数据库,而不是 MySQL ( https://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_output.htm )。您无法在 MySQL 函数内写入输出。
在继续之前,您应该学习 MySQL 语法。
关于mysql - 在一个函数中调用 MySQL 算术运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44980447/