更新时间:2026-10-21 GMT+08:00
分享

概述

在嵌入式SQL-C程序中,数据库操作可能因网络抖动、语法错误、主键冲突或未查到数据等原因触发异常。ecpg提供了两种互不排斥、可配合使用的错误与告警处理机制:

  • 声明式自动流程控制(WHENEVER指令):通过EXECUTE SQL WHENEVER指令,预先声明当系统遇到错误、警告或无数据返回时的自动化跳转逻辑(如跳转到特定代码标签、跳出循环或调用指定函数)。这种方式能够极大地减少手写显式if检查的代码量。详情请参见用WHENEVER指令控制流程。
  • 显式状态检查与信息提取(sqlca通信区):在 SQL语句执行后,程序可以直接读取sqlca(SQL通信区)结构体以及SQLSTATE与SQLCODE状态变量,获取具体的错误码、详细报错信息及受影响行数,从而实现精细化的业务分支判断。详情请参见sqlca。

在实际开发中,推荐将两者结合使用:利用WHENEVER指令全局捕获异常并跳转至统一的错误处理代码块,再在该代码块中通过sqlca结构体提取具体的报错诊断信息并记录日志。

相关文档