南大通用GBase8s 常用SQL语句(143)

    1. GET DIAGNOSTICS 语句

使用 GET DIAGNOSTICS 语句来返回关于最近执行的 SQL 语句的诊断信息。

语法

 

用法

请随同 GBase 8s ESQL/C 使用此语句。

GET DIAGNOSTICS 语句检索数据库服务器记录在名为诊断区域中的指定的状态信息。使用 GET DIAGNOSTICS 不会更改诊断区域的内容。

GET DIAGNOSTICS 语句使用下列两个子句中的一个:

  • Statement 子句返回关于最近的 SQL 语句生成的错误和警告的计数和溢出信息。
  • EXCEPTION 子句提供关于最近的 SQL 语句生成的错误和警告的特定信息。

使用 SQLSTATE 错误状态代码

在执行 SQL 语句时,自动地生成错误状态代码。此代码表示success、failure、warning 或 no data found。该错误状态代码存储在名为 SQLSTATE 的内建变量中。

类和子类代码

SQLSTATE 状态代码是一个仅可包含数字和大写字母的五字符的字符串。

SQLSTATE 状态代码的前两个字符表示类。SQLSTATE 代码的后三个字符表示子类。图 1 展示 SQLSTATE 代码的结构。此示例使用值 08001,此处 08 是类代码,001 是子类代码。值 08001 表示 unable to connect with database environment 错误。

图: SQLSTATE 代码的结构

下列表时解释类代码值的快速参考。

SQLSTATE 类代码值    结果

00                     成功

01                   成功但有警告

02                   找不到数据

> 02                 错误或警告

SQLSTATE 支持 SQL 的 ANSI/ISO 标准

返回到 SQLSTATE 变量的所有状态代码都符合 ANSI,除了以下几种情况:

  1. 带有 01 类代码和以 I 开头的子类代码的 SQLSTATE 代码是特定于 GBase 8s 的警告消息。
  2. 带有 IX 类代码和任何子类代码的 SQLSTATE 代码是特定于 GBase 8s 的错误消息。
  3. 带有以从 5 到 9 中的一个数字或从 I 到 Z 中的一个大写字母开头的 SQLSTATE 代码,表示 SQL 的 ANSI/ISO 标准当前未定义的条件。唯一的例外是类代码为 IX 的 SQLSTATE 代码,这些代码是特定于 GBase 8s 的错误消息。

GBase 8s 的客户端/服务器通信协议,诸如 SQLI 和 DRDA®,支持这些 SQLSTATE 代码值。

SQLSTATE 代码列表

此表描述与 SQLSTATE 变量相关联的类代码、子类代码和所有有效警告和错误代码的含义。

子类

含义

00

000

成功。

01

000

成功但有警告。

01

002

断开连接错误。事务回滚。

01

003

在集合函数中消除的 NULL 值。

01

004

字符串数据,右截断。

01

005

项描述符区域不足。

01

006

未调用的权限。

01

007

未授予的权限。

01

I01

数据库有事务。

01

I03

选择了符合 ANSI 的数据库。

01

I04

选择了GBase 8s 数据库服务器。

01

I05

使用了浮点到十进制转换。

01

I06

GBase 8s 扩展到符合 ANSI 的语法。

01

I07

UPDATE 或 DELETE 语句没有 WHERE 子句。

01

I08

使用 ANSI 关键字作为游标名称。

01

I09

投影列表的基数与 INTO 列表的基数不相等。

01

I10

运行在备用模式下的数据库服务器。

01

I11

打开 Dataskip。

02

000

找不到数据。

07

000

动态的 SQL 错误。

07

001

USING 子句与动态参数不匹配。

07

002

USING 子句与目标规范不匹配。

07

003

不可执行游标规范。

07

004

动态参数需要 USING 子句。

07

005

准备好的语句不是游标规范。

07

006

违背受限的数据类型属性。

07

008

无效的描述符计数。

07

009

无效的描述符索引。

08

000

连接异常。

08

001

数据库服务器拒绝连接。

08

002

连接名称在用。

08

003

连接不存在。

08

004

客户端无法建立连接。

08

006

事务已回滚。

08

007

事务状态未知。

08

S01

通信失败。

0A

000

不支持的特性。

0A

001

多服务器事务。

21

000

基数违反。

21

S01

插入数据列表与列列表不匹配。

21

S02

派生表的程度与列列表不匹配。

22

000

数据异常。

22

001

字符串数据,右截断。

22

002

NULL 值,无指示符参数。

22

003

分数值超范围。

22

005

赋值错误。

22

027

数据异常调整错误。

22

012

除以零(0)。

22

019

无效的转义字符。

22

024

未终止的字符串。

22

025

无效的转义顺序。

23

000

完整性约束未被。

24

000

无效的游标状态。

25

000

无效的事务状态。

2B

000

从属的权限描述符仍存在。

2D

000

无效的事务终止。

26

000

无效的 SQL 语句标识符。

2E

000

无效的连接名称。

28

000

无效的用户授权规范。

33

000

无效的 SQL 描述符名称。

34

000

无效的游标名称。

35

000

无效的异常号。

37

000

在PREPARE 或 EXECUTE IMMEDIATE 中的语法错误或访问违背。

3C

000

重复的游标名称。

40

000

事务回滚。

40

003

语句完成未知。

42

000

语法错误或访问违背。

S0

000

无效的名称。

S0

001

基础表或视图表已存在。

S0

002

未找到基础表。

S0

011

索引已存在。

S0

021

列已存在。

S1

001

内存分配失败。

IX

000

GBase 8s 保留的错误消息。

你可能感兴趣的:(数据库,database)