Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!

GBase 8a MPP Cluster存储过程异常处理参考手册 PDF 下


分享到:
时间:2020-08-22 09:56来源:http://www.java1234.com 作者:小锋  侵权举报
GBase 8a MPP Cluster存储过程异常处理参考手册 PDF 下载
失效链接处理
GBase 8a MPP Cluster存储过程异常处理参考手册 PDF 下载


本站整理下载:
提取码:weit 
 
 
相关截图:
 
主要内容:


前言 
手册简介 
存储过程异常处理参考手册主要用于指导用户在 GBase 8a MPP Cluster
中使用存储过程中时,如何获取出现错误 SQL 的异常信息。
本手册主要介绍异常信息的分类,GET DIAGNOSTICS 的语法格式。在示例
说明部分通过实例说明如何在存储过程中通过使用 GET DIAGNOSTICS 命令获取
异常信息。
公约 
下面的文本约定用于本文档:
约 定 说 明
加粗字体 表示文档标题
大写英文(SELECT) 表示 GBase 8a MPP Cluster 关键字
等宽字体 表示代码示例
… 省略号指明被省略的内容。
存储过程异常处理参考手册
- 2 - 南大通用数据技术股份有限公司
1 存储过程异常处理 
1.1 简介 
GBase 8a MPP Cluster 支持保存存储过程的异常信息功能,同时也能获得
DML 操作的影响行数。
诊断信息主要分两类:
1) 报错信息,主要包括错误数、错误号、错误状态、错误信息。
2) DML 操作影响的行数。
1.2 安装文件 
GBase 8a MPP Cluster 在安装后默认支持此功能。
1.3 语法格式 
用户可以在存储过程、自定义函数中或直接在客户端通过 GET DIAGNOSTICS
语法获得报错信息、DML 操作影响结果数。
 获取错误数命令格式如下:
GET DIAGNOSTICS @a=number;  获取 DML 操作影响的行数命令格式如下:
GET DIAGNOSTICS @a=row_count;
 获取错误号命令格式如下:
GET DIAGNOSTICS CONDITION no @a=gbase_errno;
 获取错误状态命令格式如下:
存储过程异常处理参考手册
南大通用数据技术股份有限公司 - 3 -
GET DIAGNOSTICS CONDITION no @a=returned_sqlstate;  获取错误信息命令格式如下:
GET DIAGNOSTICS CONDITION no @a=message_text;
语法定义中的
number/row_count/gbase_errno/returned_sqlstate/message_text 可以理解
为系统变量:
no 表示错误或 WARNINGS 的序号。 number 中包含 WARNING 和错误的数量。 row_count 只记录 GET DIAGNOSTICS 命令之前最后一条 DML 操作的影响行
数,不能累加,如果想获取多条 DML 语句的影响行数,需要在每条 DML 语句后
执行 GET DIAGNOSTICS 命令。
gbase_errno 记录错误号。
returned_sqlstate 记录错误状态。
message_text 记录错误信息。
GET DIAGNOSTICS 命令可以用在存储过程外部,但主要用于存储过程内部。
1.4 示例说明 
1.4.1获取错误数 
SQL 语句如下:
DROP TABLE IF EXISTS t;
DROP TABLE IF EXISTS tt;
DROP PROCEDURE IF EXISTS p1;
DELIMITER //
CREATE PROCEDURE p1()
BEGIN
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
存储过程异常处理参考手册
- 4 - 南大通用数据技术股份有限公司
 BEGIN
 GET DIAGNOSTICS @num1 = NUMBER;
 SELECT @num1;
 END;
 DELETE FROM tt ;
 DROP TABLE IF EXISTS t;
 GET DIAGNOSTICS @num2 = NUMBER;
 SELECT @num2;
 
END//
DELIMITER ;
CALL p1;
执行结果如下:
gbase> CALL p1; +-------+
| @num1 |
+-------+
| 1 |
+-------+
1 row in set
+-------+
| @num2 | +-------+
| 1 |
+-------+
1 row in set
Query OK, 0 rows affected, 8 warnings
gbase> SHOW WARNINGS; +-------+------+-----------------------------------------+
| Level | Code | Message |
+-------+------+-----------------------------------------+
| Note | 1051 | 192.168.103.77:5050 - Unknown table 't' |
存储过程异常处理参考手册
南大通用数据技术股份有限公司 - 5 -
| Note | 1051 | 192.168.103.75:5050 - Unknown table 't' |
| Note | 1051 | 192.168.103.74:5050 - Unknown table 't' |
| Note | 1051 | 192.168.103.76:5050 - Unknown table 't' |
| Note | 1051 | 192.168.103.77:5258 - Unknown table 't' |
| Note | 1051 | 192.168.103.75:5258 - Unknown table 't' |
| Note | 1051 | 192.168.103.76:5258 - Unknown table 't' |
| Note | 1051 | 192.168.103.74:5258 - Unknown table 't' |
+-------+------+-----------------------------------------+
8 rows in set
1.4.2获取 DML 操作影响的行数(1) 非 DML 操作执行完成后,如果用 GET DIAGNOSTICS 语法获得 DML 操作影响
行数,得到的结果是-1。
SQL 语句如下:
DROP PROCEDURE IF EXISTS p1;
DELIMITER |
CREATE PROCEDURE p1()
BEGIN
 DECLARE row_count INT;
 
 
 GET DIAGNOSTICS row_count = ROW_COUNT;
 SELECT row_count;
 
END|
DELIMITER ;
CALL p1();
执行结果如下:
gbase> CALL p1();

 

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐