DB2 SQL 错误:SQLCODE=-952,> SQLSTATE=57014,来自 Tibco BW
Posted
技术标签:
【中文标题】DB2 SQL 错误:SQLCODE=-952,> SQLSTATE=57014,来自 Tibco BW【英文标题】:DB2 SQL Error: SQLCODE=-952, > SQLSTATE=57014, from Tibco BW 【发布时间】:2014-11-16 14:33:44 【问题描述】:我正在从 BW 调用过程托盘调用 DB2 存储过程。
当我在数据库中测试这个 proc 时,它正在正确执行。 但是当我通过 BW 调用时,它会抛出异常
JDBC 错误报告:(SQLState = 57014) - com.ibm.db2.jcc.am.SqlException:DB2 SQL 错误:SQLCODE=-952, SQLSTATE=57014,SQLERRMC=null,
我的存储过程代码如下
CREATE OR REPLACE PROCEDURE TABLE1_PURGE_PROC_V1 (IN v_REF_VERSION VARCHAR(3), OUT o_DELTETE_STATUS VARCHAR(7))
P1: BEGIN
--DECLARE v_TABLE_NAME VARCHAR(30);
DECLARE v_WHERE_CONDITION VARCHAR(1024);
DECLARE V_COUNT_QUERY VARCHAR(1024);
DECLARE v_COMMIT_COUNT INTEGER;
SET v_WHERE_CONDITION='REF_VERSION ='||v_REF_VERSION;
SET v_COMMIT_COUNT=10000;
CALL SCHEMA.DELETE_WITH_COMMIT_COUNT('SCHEMA.TABLE1',v_COMMIT_COUNT,v_WHERE_CONDITION);
CALL SCHEMA.DELETE_WITH_COMMIT_COUNT('SCHEMA.TABLE2',v_COMMIT_COUNT,v_WHERE_CONDITION);
CALL SCHEMA.DELETE_WITH_COMMIT_COUNT('SCHEMA.TABLE3',v_COMMIT_COUNT,v_WHERE_CONDITION);
CALL SCHEMA.DELETE_WITH_COMMIT_COUNT('SCHEMA.TABLE4',v_COMMIT_COUNT,v_WHERE_CONDITION);
INSERT INTO SCHEMA.DEBUG_LOG(PROC_NAME,LOG_TIME,MESSAGE) VALUES('TABLE1_PURGE_PROC_V1',CURRENT_TIMESTAMP,'ALL TABLE1 RELATED TABLES INVALID DATA DELETED FOR VERSION-'||v_REF_VERSION);
SET o_DELTETE_STATUS ='SUCCESS';
END P1
####################################### PROC 2 ###########################################################
CREATE OR REPLACE PROCEDURE DELETE_WITH_COMMIT_COUNT(IN v_TABLE_NAME VARCHAR(24), IN v_COMMIT_COUNT INTEGER, IN v_WHERE_CONDITION VARCHAR(1024))
NOT DETERMINISTIC
LANGUAGE SQL
P1: BEGIN
-- DECLARE Statements
DECLARE SQLCODE INTEGER;
DECLARE v_DELETE_QUERY VARCHAR(1024);
DECLARE v_DELETE_STATEMENT STATEMENT;
SET v_DELETE_QUERY = 'DELETE FROM (SELECT 1 FROM ' || v_TABLE_NAME || ' WHERE ' || v_WHERE_CONDITION
|| ' FETCH FIRST ' || RTRIM(CHAR(v_COMMIT_COUNT)) || ' ROWS ONLY) AS DELETE_TABLE';
PREPARE v_DELETE_STATEMENT FROM v_DELETE_QUERY;
DEL_LOOP:
LOOP
EXECUTE v_DELETE_STATEMENT;
IF SQLCODE = 100 THEN
INSERT INTO TEP.DEBUG_LOG(PROC_NAME,LOG_TIME,MESSAGE) VALUES('DELETE_WITH_COMMIT_COUNT',CURRENT_TIMESTAMP,'ALL DATA DELETED FROM'||v_TABLE_NAME||'QUERY USED IS'||v_DELETE_QUERY);
LEAVE DEL_LOOP;
END IF;
COMMIT;
END LOOP;
COMMIT;
END P1
据我研究,据说是 DB2 中的中断代码。 如何在 DB2 中处理这个问题
【问题讨论】:
这可能是由于您的应用程序超时造成的。 我将超时设置为 100 秒,存储过程一般不会花费太多时间。最大(40 秒) 什么 DB2 平台?什么版本? 另外,timeout
你设置了什么? DB2 超时,还是 Tibco 超时?
我现在将 tibco 超时添加到 6 分钟。谢谢大家的帮助
【参考方案1】:
我将 Tibco 超时添加到现在可以工作的 6 分钟。 从 12 个表中删除 200 万条数据 谢谢大家帮忙
【讨论】:
以上是关于DB2 SQL 错误:SQLCODE=-952,> SQLSTATE=57014,来自 Tibco BW的主要内容,如果未能解决你的问题,请参考以下文章
SQL 查询的准备语句,错误 DB2 SQL 错误:SQLCODE=-206,SQLSTATE=42703
DB2 SQL 错误(SQLCODE:-964,SQLSTATE:57011)处理方法
原因:com.ibm.db2.jcc.am.SqlSyntaxErrorException:DB2 SQL 错误:SQLCODE=-440,SQLSTATE=42884
我得到“com.ibm.db2.jcc.am.SqlIntegrityConstraintViolationException:DB2 SQL 错误:SQLCODE=-803,SQLSTATE=235
DB2 SQL 错误:SQLCODE=-901,SQLSTATE=58004,SQLERRMC=无效的排序规则 ID,驱动程序=4.21.29