使用return语句在存储函数中处理MYSQL异常

使用return语句在存储函数中处理MYSQL异常,mysql,exception,Mysql,Exception,桌子 我想编写用于添加员工的存储函数,如果insert命令执行成功,该函数将返回1;如果联系人号码重复,该函数将返回0 在Oracle中,我编写的函数如下 create table EMP(id int primary key, name varchar(50), contact int(10) unique); 类似地,如何处理MYSQL存储函数中的异常并返回一些值? 在Oracle中,我可以基于异常返回一个值。 例如 如何在MYSQL存储函数中实现相同的逻辑?如果要捕获错误,请使用退出处理

桌子

我想编写用于添加员工的存储函数,如果insert命令执行成功,该函数将返回1;如果联系人号码重复,该函数将返回0

在Oracle中,我编写的函数如下

create table EMP(id int primary key, name varchar(50), contact int(10) unique);
类似地,如何处理MYSQL存储函数中的异常并返回一些值?

在Oracle中,我可以基于异常返回一个值。 例如


如何在MYSQL存储函数中实现相同的逻辑?

如果要捕获错误,请使用退出处理程序

create or replace function Function_Name(--Parameter_List--)
return number as
BEGIN
    --Statements...
EXCEPTION
    WHEN exception_1 THEN return 1;
    WHEN exception_2 THEN return 2;
    WHEN exception_3 THEN return 3;
END;

要根据错误返回不同的值,请使用-命令。

这是否意味着select 1或select 0在MySQL中的工作方式类似于return 1,而在oracle中返回0?在MySQL中,存储过程可以返回零、一个或多个结果集(具有行和列的类似表的结构)。当你选择(不输入)时,所选结果集返回到调用程序(PHP、Perl、C++等),然后可以处理结果集。我可以使用“返回0”和“返回1”而不是“选择0”和“选择1”吗?存储过程将值返回为行,并使用<代码>选择< <代码>,而不是由<代码>返回<代码>。要返回一行两列,可以使用
选择0,“无插入行”使用Oracle数据库托管网站成本太高。因此,我决定切换到Mysql数据库。如果我将insert、update、delete等命令复制到mysql并运行它,它会工作得很好。我只发现存储函数和存储过程有问题,因为它们有不同的语法。你解决了我的问题。非常感谢你。。。
create or replace function Function_Name(--Parameter_List--)
return number as
BEGIN
    --Statements...
EXCEPTION
    WHEN exception_1 THEN return 1;
    WHEN exception_2 THEN return 2;
    WHEN exception_3 THEN return 3;
END;
create procedure sp_proc(in_id int, in_name varchar(50), in_contact int)
begin

declare exit handler for sqlexception
begin
  select 0;
end;


insert into EMP (id, name, contact) values(in, in_id, in_contact);
select 1;

end