群里有人询问,在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. iOS开发中@selector的理解

    @selector 是什么? 1一种类型 SEL2代表你要发送的消息(方法), 跟字符串有点像, 也可以互转.: NSSelectorFromString() / NSSelectorFromStri ...

  2. Android 打开闪光灯(手电筒)

    package com.example.openBackLight; import android.app.Activity; import android.hardware.Camera; impo ...

  3. maven 命令备忘

    1. 打包时 不执行测试 mvn package -Dmaven.test.skip=true

  4. mac 设置 ll 等alias 并永久生效

    往上看了在.bash_profile中配置 然后 source  的方法, 试过了, 只是当前的终端有效,当电脑重启或者关闭终端就失效了,只好看看 mac 的 profile 代码 # System- ...

  5. AutoEventWireup解释

    这一事件聚合了当前页是否自动关联某些特殊事件. 首先,从浏览器页面出发的事件不能立刻在本地得到处理,而是POST至服务器上,因此,asp.net建立了委托(代理)机制.在建立一个事件的同事,建立相应的 ...

  6. Java学习笔记之:java环境搭建

    一.准备工作 在学习java之前需要安装对配置java的运行环境,所以我们需要安装以下软件: 1.java jdk 2.eclipse 二.配置环境变量 1.首先,找到你刚才安装的JDK的安装目录,我 ...

  7. (转)Struts 拦截器

    一.拦截器是怎么实现: 实际上它是用Java中的动态代理来实现的 二.拦截器在Struts2中的应用 对于Struts2框架而言,正是大量的内置拦截器完成了大部分操作.像params拦截器将http请 ...

  8. bootstrap 3.x笔记

    布局容器 Bootstrap 需要为页面内容和栅格系统包裹一个 .container 容器.我们提供了两个作此用处的类.注意,由于 padding等属性的原因,这两种 容器类不能互相嵌套. .cont ...

  9. Android 下log的使用总结

    Android 下log的使用总结 一:在源码开发模式下 1:包含头文件: #include <cutils/log.h> 2:定义宏LOG_TAG #define LOG_TAG &qu ...

  10. sql 2005 同义词

    --> Title  : SQL Server2005 Synonym的使用 --> Author : wufeng4552 --> Date   : 2009-10-30 1.Sy ...