注册

存储过程中新建分区后无法插入数据

选择沉默 2023/11/27 498 1

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:V8
【操作系统】:Kylin Linux Advanced Server V10 (Lance)
【CPU】:AMD EPYC Processor
【问题描述】*:存储过程中创建新分区后再往表中插入数据,报错-7184:对象定义被修改,版本检查失败
————————
查社区论坛后改为动态sql执行insert语句后可以解决。因为insert语句较长且其中含有较多变量,用动态sql写代码涉及到变量拼接、字符转义,不方便维护,想请教一下DM是否有类似HIVE的动态分区(sethive.exec.dynamic.partition)这样的参数可以设置以解决此类问题
——————
以下为报错部分代码供参考

--月初添加分区,删除前13个月分区
IF V_MONTH_BEGIN_FLAG = '1' THEN
	V_SQL := 'ALTER TABLE CRM.CUST_ALG_SUM_P DROP PARTITION IF EXISTS '||V_PAR_ADD;						--删除本月分区(支持重跑)
	EXECUTE IMMEDIATE V_SQL;
	V_STEP := V_STEP+1;
	V_LOG_MSG := V_STEP||'删除本月分区'||V_PAR_ADD||'(支持重跑)';
	CRM.PRC_STEP_LOGS(V_PRC_NAME,V_PRC_DESC,INDATE,V_LOG_MSG);
	
	V_SQL := 'ALTER TABLE CRM.CUST_ALG_SUM_P ADD PARTITION '||V_PAR_ADD||' VALUES LESS THAN ('||V_NEXT_MTH_BEN||')';	--新增本月分区
	EXECUTE IMMEDIATE V_SQL;
	V_STEP := V_STEP+1;
	V_LOG_MSG := V_STEP||'新增本月分区'||V_PAR_ADD;
	CRM.PRC_STEP_LOGS(V_PRC_NAME,V_PRC_DESC,INDATE,V_LOG_MSG);
	
	V_SQL := 'ALTER TABLE CRM.CUST_ALG_SUM_P DROP PARTITION IF EXISTS '||'V_PAR_DEL';						--删除前13个月分区
	EXECUTE IMMEDIATE V_SQL;
	V_STEP := V_STEP+1;
	V_LOG_MSG := V_STEP||'删除前13个月分区'||V_PAR_DEL;
	CRM.PRC_STEP_LOGS(V_PRC_NAME,V_PRC_DESC,INDATE,V_LOG_MSG);
END IF;


--开始插入数据
V_STEP=V_STEP+1;
V_LOG_MSG :=V_STEP||':开始插入零售客户指标日统计表数据';
CRM.PRC_STEP_LOGS(V_PRC_NAME,V_PRC_DESC,INDATE,V_LOG_MSG);					


INSERT INTO CRM.CUST_ALG_SUM_P
	(
	 CUST_ID						-- 01 客户编号
	,ASET_BAL                       -- 02 金融资产余额
	,ASET_YAVG                      -- 03 金融资产年日均
	,ASET_QAVG                      -- 04 金融资产季日均

。。。。。。。。。。

回答 0
暂无回答
扫一扫
联系客服