0

現在のセッションで DB2 の宣言済みグローバル一時テーブルが存在するかどうかを確認するにはどうすればよいですか?

私のアプリケーションの場合、ユーザー セッション用に一時テーブルを 1 回作成し、レポートが実行されるたびに行を挿入できるようにする必要があります。そのため、レポートが 2 回以上実行されたときに、このテーブルからすべての行を削除してから、新しい行を再入力する必要があります。

現在、一時テーブルを作成するメソッドは42710 SQLSTATE error、2 回目の実行時にスローしています。

このステートメントは私の実装で機能しますか: DECLARE CONTINUE HANDLER FOR SQLSTATE '42710' SET DGTT_FOUND=1Java でどのように使用できますか ( executeUpdate()?)

4

2 に答える 2

0

宣言された一時テーブルはカタログで定義されておらず、現在のセッションでのみ表示されるため (セッションごとに同じ一時テーブル名の定義が異なる可能性があります)、テーブルをクエリしてその答えを分析することしかできませんでした。

まず、

select count(0) from session.myTempTable

DB2 が存在しないと言った場合は、新しいテーブルを定義できます。

DB2 が存在すると言った場合は、再作成するために作成またはドロップできます。SQL 状態 42710 を取得したため、コードのハンドラーを作成できます。

ただし、ハンドラーは SQL プロシージャーで使用できるため、クエリの前に呼び出される SP を作成する必要があります。そのSPはテーブルが存在するかどうかを確認し、存在する場合と存在しない場合にやりたいことを入力します。

参考文献:

ハンドル - http://publib.boulder.ibm.com/infocenter/db2luw/v10r1/topic/com.ibm.db2.luw.apdv.sqlpl.doc/doc/c0009025.html

表 - http://publib.boulder.ibm.com/infocenter/db2luw/v10r1/topic/com.ibm.db2.luw.admin.dbobj.doc/doc/r0054491.html

于 2013-07-04T10:28:14.773 に答える