首页 > 解决方案 > 从过程 DB2 中的选择查询中获取 SQLCODE 和 SQLSTATE

问题描述

我有一个过程,我想要的只是选择查询中的 SQLSTATE 和 SQLCODE。我对结果本身不感兴趣。

 Create procedure select_test(IN query varchar(1024))
 Language sql
 BEGIN
DECLARE SQLCODE INTEGER DEFAULT 0;
DECLARE SQLSTATE CHAR(5) DEFAULT '00000';
DECLARE V_QUERY VARCHAR(24576);
DECLARE V_ERRORMSG VARCHAR(2048) DEFAULT '';
DECLARE V_SQLCODE INTEGER DEFAULT 0;
DECLARE V_SQLSTATE CHAR(5) DEFAULT '00000';
DECLARE STMT STATEMENT;
DECLARE C1 CURSOR FOR STMT;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION, SQLWARNING,NOT FOUND
BEGIN
GET DIAGNOSTICS
EXCEPTION
1 V_ERRORMSG = MESSAGE_TEXT;
VALUES(SQLSTATE,SQLCODE)INTO V_SQLSTATE, V_SQLCODE;
END;

SET V_QUERY = QUERY;
PREPARE STMT FROM V_QUERY;

OPEN C1; CLOSE C1;

 End@

我只需要 SQLCODE、SQLSTATE 和 MESSAGE_TEXT。选择的结果并不重要。查询类似于

 SELECT A,B,C from TAB_A;

查询中有错误的表。

感谢@Mark Ba​​rinstein,我得到了光标部分的提示,所以谢谢你。

问题是我得到 SQLCODE -504,它应该是 -204。所以不是select的SQLCODE。

我正在运行 DB2 Windows v10.5

任何想法?

谢谢

标签: sqlstored-procedureserror-handlingdb2execute

解决方案


推荐阅读