失效链接处理 |
GBase 8a MPP Cluster存储过程异常处理参考手册 PDF 下载
本站整理下载:
相关截图:
主要内容:
前言
手册简介
存储过程异常处理参考手册主要用于指导用户在 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();
|