失效链接处理 |
GBase 8a MPP Cluster存储q程异常处理参考手?PDF 下蝲
本站整理下蝲Q?/strong>
链接Q?a target="_blank">https://pan.baidu.com/s/1ARQFNM2oYhAXTD0246IZlw
提取码:(x)weit
相关截图Q?/strong>
![]()
主要内容Q?/strong>
前言
手册?nbsp;
存储q程异常处理参考手册主要用于指导用户在 GBase 8a MPP Cluster
中用存储过E中Ӟ如何获取出现错误 SQL 的异怿息?/div>
本手册主要介l异怿息的分类QGET DIAGNOSTICS 的语法格式。在CZ
说明部分通过实例说明如何在存储过E中通过使用 GET DIAGNOSTICS 命o(h)获取
异常信息?/div>
公约
下面的文本约定用于本文Q?/div>
U????/div>
加粗字体 表示文标题
大写英文QSELECTQ?表示 GBase 8a MPP Cluster 关键?/div>
{宽字体 表示代码CZ
… 省略h明被省略的内宏V?/div>
存储q程异常处理参考手?/div>
- 2 - 南大通用数据技术股份有限公?/div>
1 存储q程异常处理
1.1 ?nbsp;
GBase 8a MPP Cluster 支持保存存储q程的异怿息功能,同时也能获得
DML 操作的媄响行数?/div>
诊断信息主要分两c:(x)
1) 报错信息Q主要包括错误数、错误号、错误状态、错误信息?/div>
2) DML 操作影响的行数?/div>
1.2 安装文g
GBase 8a MPP Cluster 在安装后默认支持此功能?/div>
1.3 语法格式
用户可以在存储过E、自定义函数中或直接在客L(fng)通过 GET DIAGNOSTICS
语法获得报错信息、DML 操作影响l果数?/div>
?获取错误数命令格式如下:(x)
GET DIAGNOSTICS @a=number; ?获取 DML 操作影响的行数命令格式如下:(x)
GET DIAGNOSTICS @a=row_count;
?获取错误号命令格式如下:(x)
GET DIAGNOSTICS CONDITION no @a=gbase_errno;
?获取错误状态命令格式如下:(x)
存储q程异常处理参考手?/div>
南大通用数据技术股份有限公?- 3 -
GET DIAGNOSTICS CONDITION no @a=returned_sqlstate; ?获取错误信息命o(h)格式如下Q?/div>
GET DIAGNOSTICS CONDITION no @a=message_text;
语法定义中的
number/row_count/gbase_errno/returned_sqlstate/message_text 可以理解
为系l变量:(x)
no 表示错误?WARNINGS 的序受?number 中包?WARNING 和错误的数量?row_count 只记?GET DIAGNOSTICS 命o(h)之前最后一?DML 操作的媄响行
敎ͼ不能累加Q如果想获取多条 DML 语句的媄响行敎ͼ需要在每条 DML 语句?/div>
执行 GET DIAGNOSTICS 命o(h)?/div>
gbase_errno 记录错误受?/div>
returned_sqlstate 记录错误状态?/div>
message_text 记录错误信息?/div>
GET DIAGNOSTICS 命o(h)可以用在存储q程外部Q但主要用于存储q程内部?/div>
1.4 CZ说明
1.4.1获取错误?nbsp;
SQL 语句如下Q?/div>
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
存储q程异常处理参考手?/div>
- 4 - 南大通用数据技术股份有限公?/div>
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;
执行l果如下Q?/div>
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' |
存储q程异常处理参考手?/div>
南大通用数据技术股份有限公?- 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 操作影响的行敎ͼ1Q??DML 操作执行完成后,如果?GET DIAGNOSTICS 语法获得 DML 操作影响
行数Q得到的l果?1?/div>
SQL 语句如下Q?/div>
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();
执行l果如下Q?/div>
gbase> CALL p1();
|