1

私は MSSQL の人間ですが、一時テーブルを作成し、それに挿入し、それを処理する必要がある DB2 クエリに取り組んでいます。大幅に短縮されたテストとして、同じ結果を提供する次のクエリを使用しています..

declare global temporary table tt_testingSyntax (id int);
insert into session.tt_testingSyntax (id) values (1);
insert into session.tt_testingSyntax (id) values (2);
insert into session.tt_testingSyntax (id) values (3);
insert into session.tt_testingSyntax (id) values (4);
select * from session.tt_testingSyntax;

ゼロ行が返されます。なぜでしょうか?テーブルスペースを作成し、テーブルがクエリ全体のスコープ内にあることを確認しました。

4

2 に答える 2

1

試す:

declare global temporary table tt_testingSyntax (id int) 
ON COMMIT PRESERVE ROWS NOT LOGGED;

insert into session.tt_testingSyntax (id) values (1);
insert into session.tt_testingSyntax (id) values (2);
insert into session.tt_testingSyntax (id) values (3);
insert into session.tt_testingSyntax (id) values (4);
select * from session.tt_testingSyntax;

ON COMMIT DELETE ROWS (デフォルト) または ON COMMIT PRESERVE ROWS の 2 つのオプションがあります。

于 2009-05-30T02:20:48.210 に答える
0

自分のテーブルを作成するためのアクセス権を無意識のうちに持ってしまいました(つまり、ユーザーXの場合、X.temp1を作成できました)。このクエリは1回だけ実行する必要があるため、これは正常に機能します。ありがとう。

于 2009-05-30T22:15:20.227 に答える