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 |
|
#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; |
#9100分 |
变量名必须指定
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(); |