Code Bye

MySQL中 如何捕获到异常 并将异常保存表后抛出?

 

MySQL中 怎么捕获到异常 并将异常内容保存到异常错误表中且抛出?

代码如下:

create table t_demo(demo int);

drop procedure if exists p_demo;

delimiter //

create procedure p_demo(

out  vReturnValue nvarchar(100),

out  iResult int)

label:

begin

declare continue handler for sqlexception set iResult = -1;

insert into t_demo(demo)

select “”admin””;

end;

//

delimiter ;

call p_demo(@ReturnValue, @Result);

select @Result;

这里若不加declare continue handler for sqlexception set iResult = -1;执行会抛出异常

加了后不会抛出,希望能实现将异常内容存储另外一张表中,然后再重新再抛出来

原来mssql是可以通过try catch来实现

但是mysql就不知怎么处理了

网络上找到一篇文章 http://www.bluegecko.net/mysql/debugging-stored-procedures/

感觉处理的很麻烦 

还请教大家 有什么好的办法 能够实现 谢谢。

#2
MYSQL中无法直接得到,只有参考手册中的ERRORCODE,手工存入表中,处理时调用
#3
MYSQL中无法实现这个功能。或者换个思路,或者修改MYSQL源代码。
#7
数据库 不能换 肯定要用mysql的。 

暂且这样吧 实在不行 就算了  

如有人知道 还请进来说下 谢谢。 

#8
再多问个问题,关于mysql执行sql字符串,希望能实现传入参数 然后后面读取这个参数的数值,但是不行

如下:

set @SqlStr = “”SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse””;

set @a = 3;

    set @b = 4;

    prepare SqlStr from @SqlStr;

    execute SqlStr using @a, @b;

    deallocate prepare SqlStr;

这个是传入参数,是ok

    

下面这个是希望返回log表记录数,但是失败 还请指教  谢谢。 

    set @SqlStr = “”select count(1) into ? from t_log””;

set @i = 0;

    prepare SqlStr from @SqlStr;

    execute SqlStr using @i;

    deallocate prepare SqlStr;

select @i;

#9

100分

变量名必须指定

set @SqlStr = “”select count(1) into @i from t_log””;

#10
不行啊   创建ok 执行出错了  代码如下 麻烦看下 谢谢。

这个应该也不合理 sqlstr里面的@i是里面的变量 外面怎么能读取的到?

drop procedure if exists p_demo;

delimiter //

create procedure p_demo()

begin

   set @a = 0;

    set @SqlStr = “”select count(1) into @i from t_log;””;

    prepare SqlStr from @SqlStr;

    execute SqlStr using @i;

    deallocate prepare SqlStr;

    select @i;

end;

//

delimiter ;

call p_demo();

#11
搞定了。给分。

drop procedure if exists p_demo;

delimiter //

create procedure p_demo()

begin

 set @SqlStr = “”select count(1) into @i from t_log;””;

    prepare SqlStr from @SqlStr;

    execute SqlStr;

    deallocate prepare SqlStr;

    select @i;

end;

//

delimiter ;

call p_demo();


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明MySQL中 如何捕获到异常 并将异常保存表后抛出?