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

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

在应用中使用 SQLSTATE

您可在程序中使用名为 SQLSTATE 的内建变量,无需声明。SQLSTATE 包含对错误处理不可或缺的状态代码,程序每一次执行 SQL 语句都会生成状态代码。自动地创建 SQLSTATE。您可检测 SQLSTATE 变量来确定 SQL 语句是否成功。如果 SQLSTATE 变量指出语句失败,则可执行 GET DIAGNOSTICS 语句来获取附加的错误信息。

要获取展现如何在程序中使用 SQLSTATE 变量的示例,请参阅 使用 GET DIAGNOSTICS 进行错误检查。

Statement 子句

Statement 子句

 元素

描述

限制

语法

status_var 

主变量,用于接收关于指定的状态域名称的最近 SQL 语句的状态信息

必须与域的数据类型相匹配

特定于语言

在检索计数和溢出信息时,GET DIAGNOSTICS 可将这三个语句域的值存入对应的主变量。主变量数据类型必须与请求的域的数据类型相同。下列关键字表示这三个域。

域名称关键字

域数据类型

域内容

ESQL/C 主变量数据类型

MORE

字符

Y 或 N

char[2]

NUMBER

整数

1 至 35,000

int

ROW_COUNT

整数

0 至 999,999,999

int

使用 MORE 关键字

使用 MORE 关键字来确定最近执行的 SQL 语句是否导致数据库服务器的下列操作:

  1. 将它检测到的所有异常存储在诊断区域中

如果如此,则 GET DIAGNOSTICS 返回值 N。

  1. 检测到的异常多于它存储在诊断区域中的异常

如果如此,则 GET DIAGNOSTICS 返回值 Y。(MORE 的值通常为 N。)

使用 ROW_COUNT 关键字

ROW_COUNT 关键字返回最近执行的 DML 语句处理的行数。ROW_COUNT 对这些行计数:

  1. 插入到表内的行
  2. 在表中更新的行
  3. 从表删除的行

使用 NUMBER 关键字

NUMBER 关键字返回最近执行的 SQL 语句发生的异常的数量。根据计数得到的异常数,NUMBER 字段可保留从 1 至 35,000 的值。

EXCEPTION 子句

Exception 子句

 

元素

描述

限制

语法

exception_num 

异常的数量

从 1 至 35,000 的整数

精确数值 

exception_var 

存储 exception_num 的变量

必须为 SMALLINT 或 INT

特定于语言

information 

接收指定的异常域的值的主变量

数据类型必须与指定的字段的数据类型向匹配

特定于语言

exception_num 文字表示从 Statement 子句中的 NUMBER 字段返回的异常的数量的异常值之一。

在检索异常信息时,GET DIAGNOSTICS 将七个字段中的每一个的值写到相应的主变量内。这些域定位在诊断区域中,并从最近的 SQL 语句产生的异常派生而来。

主变量数据类型必须与请求的域的数据类型相同。下表描述这七个异常信息域。

域名称关键字

域数据类型

域内容

ESQL/C 主变量数据类型

RETURNED_SQLSTATE

字符

SQLSTATE 值

char[6]

GBASEDBT_SQLCODE

整数

特定于 GBase 8s 的状态代码

int4

CLASS_ORIGIN

字符

字符串

char[255]

SUBCLASS_ORIGIN

字符

字符串

char[255]

MESSAGE_TEXT

字符

字符串

char[255]

MESSAGE_LENGTH

整数

数值

int

SERVER_NAME

字符

字符串

char[255]

CONNECTION_NAME

字符

字符串

char[255]

应用通过编号指定异常,或使用无符号的整数,或使用整数主变量(小数位为 0 的精确数值)。值为 1 的异常对应于由最近的 SQL 语句而不是 GET DIAGNOSTICS 设置的 SQLSTATE 值。其他异常编号与由 SQL 语句产生的其他异常之间的关联未定义。这样,不存在设置顺序,异常值依次顺序填充到诊断区域。您通常会得到至少一个异常,即使 SQLSTATE 值表示成功。

如果在 GET DIAGNOSTICS 语句内发生错误(即,如果请求了无效的异常编号),则将 GBase 8s 内部的 SQLCODE 和 SQLSTATE 变量设置为那个异常的值。此外,未定义 GET DIAGNOSTICS 字段。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值