群里有人询问,在mysql的proc中如何获取错误信息、错误编号呢?我们知道在oracle、mssql中比较简单;

oracle中sqlcode,sqlerrm ;mssql中ERROR_PROCEDURE(), ERROR_MESSAGE();
那么在mysql中呢?
下面给出示例:
mysql> show create procedure proc_6\G
*************************** 1. row ***************************
           Procedure: proc_6
            sql_mode: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
    Create Procedure: CREATE DEFINER=`root`@`192.168.6.%` PROCEDURE `proc_6`()
    LANGUAGE SQL
begin
DECLARE code CHAR(5) DEFAULT '00000';
DECLARE msg TEXT;
declare pout double;
 
DECLARE continue HANDLER FOR SQLEXCEPTION
    BEGIN
      GET DIAGNOSTICS CONDITION 1 --通过GET DIAGNOSTICS这样的方式获取sqlstate message_text(当然错误信息错误编号可以自己定义)
--参考我的另外一个示例
------------------------------
drop FUNCTION if exists test.fn_get_random_str;
 
create function fn_get_random_str(f_len int)
returns varchar(4000)
no sql 
begin 
  declare v_str varchar(52);
  declare v_cnt int;
  declare f_result varchar(4000);
  /*自定义异常编码40001:value_to_large*/
  declare value_to_large condition for sqlstate '40001';
  
  if f_len>4000 then 
    begin 
      signal sqlstate '40001'
      set message_text='value_to_large';/*输出错误信息40001:value_to_large*/
    end ;
  end if ;
  
  set v_str='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  set v_cnt=1;
  set f_result='';
  
  while v_cnt<=f_len do
    set f_result=concat(substr(v_str,round(rand()*52,0),1),f_result);
    set v_cnt=v_cnt+1;
  end while ;
  
  return f_result ;
  
end ;
 
mysql> select fn_get_random_str(5000);
ERROR 1644 (40001): value_to_large
------------------------------
        code = RETURNED_SQLSTATE, msg = MESSAGE_TEXT;
    END;
/*set pout= 1/0;*/
select 1/0 into pout from test.ttt ;  --模拟了一个不存在的表错误
select concat(code,msg) ;
end
character_set_client: utf8
collation_connection: utf8_general_ci
  Database Collation: latin1_swedish_ci
1 row in set (0.28 sec)
 
mysql> call test.proc_6();
+-------------------------------------+
| concat(code,msg)                    |
+-------------------------------------+
| 42S02Table 'test.ttt' doesn't exist |  --看到了吧错误信息打印出来了
+-------------------------------------+
1 row in set (0.99 sec)
 
Query OK, 0 rows affected (0.99 sec)
咋样满足需求了吧!

基于Fragment实现Tab的切换,滑出侧边栏的更多相关文章

  1. Android SlidingMenu 滑出侧边栏

    最近有个项目需要使用侧边栏,而且希望是左右两侧都能够滑出侧边菜单,在网上查找实现方式时,发现大家用的最多的还是大神jfeinstein10的SlidingMenu库,地址https://github. ...

  2. 基于jQuery打造的选项卡向上弹出jquery焦点图切换特效

    基于jQuery打造的选项卡向上弹出jquery焦点图切换特效 鼠标经过标题栏,会出现层特效向上滑动,并且在同时进行幻灯片切换,效果十分不错. 有兴趣的童鞋可以下载看看,在IE6方面兼容性也不错,只有 ...

  3. 基于jQuery的图片相册滑出放大插件

    今天给大家带来一款基于jQuery的图片相册滑出放大插件.点击相册图片,展示该图片.该插件适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗..效 ...

  4. Fragment防止自动清理 (ViewPager滑动时,滑出屏幕后被清理)(转)

    原文链接:http://www.xuebuyuan.com/2231000.html 这个问题网上搜一搜发现帖子很多,但是博主试了几种好像没有说的那么好用 一. 比如给ViewPager设置长度,以增 ...

  5. Activity左边滑出,右边滑入的动画切换

    Activity左边滑出,右边滑入的动画切换 转载请注明出处:http://blog.csdn.net/u012301841/article/details/46920809 大家都知道Android ...

  6. [Swift通天遁地]九、拔剑吧-(15)搭建具有滑出、视差、3D变形等切换效果的引导页

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  7. Android使用Fragment打造万能页面切换框架

    首先我们来回顾一下传统用Activity进行的页面切换.activity之间切换.首先须要新建intent对象,给该对象设置一些必须的參数,然后调用startActivity方法进行页面跳转. 假设须 ...

  8. JS特效之Tab标签切换

    在我们平时浏览网站的时候,经常看到的特效有图片轮播.导航子菜单的隐藏.tab标签的切换等等.这段时间学习了JS后,开始要写出一些简单的特效.今天我也分享一个简单tab标签切换的例子.先附上代码: HT ...

  9. Android自定义控件----RadioGroup实现APP首页底部Tab的切换

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

随机推荐

  1. mysql InnoDB 索引小记

    0.索引结构 1).MyISAM与InnoDB索引结构比较,如下: 2).MyISAM的索引结构 主键索引和二级索引结构很像,叶子存储的都是索引以及数据存储的物理地址,其他节点存储的仅仅是索引信息.其 ...

  2. THUSC 2016游记

    又去北京转了一圈,拿到了很不错的协议,非常的开森 day -1 6.2 上午去pku的同学就走了QAQ 然后波哥说下午要考试,考联考题 我一脸无奈的表示我已经提前要到题目而且看了题了 然后波哥就决定给 ...

  3. Project Euler 93:Arithmetic expressions 算术表达式

    Arithmetic expressions By using each of the digits from the set, {1, 2, 3, 4}, exactly once, and mak ...

  4. NSDictionary 初始化

    NSDictionary *dic1=[NSDictionary dictionaryWithObject:@"1" forKey:@"a"];         ...

  5. Java API —— BigDecimal类

    1.BigDecimal类概述  由于在运算的时候,float类型和double很容易丢失精度,演示案例.所以,为了能精确的表示.计算浮点数,Java提供了BigDecimal 不可变的.任意精度的有 ...

  6. php-resque 任务队列

    php-resque License : MIT Source Code Allo点评:php-resque是Ruby项目resque在php下的实现.虽然Gearman也是一个不错的选择,但是res ...

  7. JAVA文件中获取路径及WEB应用程序获取路径方法

    JAVA文件中获取路径及WEB应用程序获取路径方法 1. 基本概念的理解 `绝对路径`:你应用上的文件或目录在硬盘上真正的路径,如:URL.物理路径 例如: c:/xyz/test.txt代表了tes ...

  8. Setup Oracle 11gR2 for Redhat Linux AS 4 Update 7 x64

    Setup Oracle 11gR2 for Redhat Linux AS 4 Update 7 x64 1. checking linux version. [root@localhost ~]# ...

  9. Java视频教程

    http://outofmemory.cn/java/video/ http://outofmemory.cn/tutorial/

  10. windows 下 apache设置

    apache,apache配置,配置端口 mac下apache配置 添加虚拟主机: Alias /selftest/ "D:/self-test/" <Directory & ...