0

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 環境で

4

1 に答える 1

0

プロシージャを作成し、SYSCAT.TABLES からテーブルをループしてテーブル名を取得し、再度ループしてすべてのテーブルの選択クエリを起動します。

私はdb2で長い間働いていたので、100%確信が持てません

于 2013-07-25T11:46:20.667 に答える