我需要一个在一个表中循环的存储过程,该表在db2中返回一个表的名称,并且根据该名称,我需要从命名表中执行select语句。我试过用“执行立即”这么多方式做到这一点,这里丢失计数就是执行立即的一个例子:
set insertstring = 'INSERT INTO pribpm.TEMP_T_TOQUE_CICLO (idSemana,tiempo_ciclo,tiempo_toque)
SELECT to_number(to_char( '''|| ' time_stamp ' ||''' ,' || ' IW ' || ')) ,SUM(KPITOTALTIMECLOCK),SUM(s.KPIEXECUTIONTIMECLOCK) FROM ' || TABLA || ' where to_number(to_char( '''|| ' time_stamp ' ||''' ,' || ' IW ' || ')) between ' || (to_number(to_char(FECHA,'IW'))-3) || ' and ' || to_number(to_char(FECHA,'IW')) || ' GROUP BY to_number(to_char('''|| ' time_stamp ' ||''' ,' || ' IW ' || '))';
PREPARE stmt FROM insertstring;
EXECUTE IMMEDIATE insertstring;
其中tabla是一个包含表名的字符串,fecha是一个时间戳类型的日期
除了我用这样的游标尝试过它
set select_ = 'SELECT time_stamp, KPITOTALTIMECLOCK, KPIEXECUTIONTIMECLOCK FROM ' || tabla;
PREPARE stmt FROM select_;
FOR v2 AS
c2 cursor for
execute select_
do
if to_number(to_char(time_stamp,'IW')) between
(to_number(to_char(fecha,'IW'))-3) and to_number(to_char(fecha,'IW')) then
--something here
end if;
END FOR;
但没有成功。
请问您或某人可以帮助我清除我的错误或对此尝试做一些其他想法吗? 这一切都在db2环境中
答案 0 :(得分:0)
编写一个过程并从SYSCAT.TABLES循环表以获取表名,然后再循环以触发每个表的选择查询。
我不是100%肯定,因为我在db2上工作了很长时间