2009-05-29 6 views
1

Je suis un mec SQL, mais je travaille sur une requête DB2 qui a besoin de créer une table temporaire, de l'insérer et de faire des choses avec. Comme un test beaucoup plus court, j'utilise la requête suivante, qui fournit le même résultat ..Tables temporaires DB2: ne pas stocker ou ne pas récupérer d'informations

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; 

zéro lignes sont renvoyées. Pourquoi cela serait-il? J'ai créé le tablespace et vérifié que la table est dans la portée tout au long de la requête.

Répondre

0

J'ai fini sans le savoir avoir accès à créer mes propres tables (c'est-à-dire pour l'utilisateur X, je pourrais créer X.temp1). Étant donné que cette requête n'a besoin d'être exécutée qu'une seule fois, cela fonctionne correctement. Merci.

1

Essayez:

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; 

Il y a deux options ... ON COMMIT DELETE ROWS (par défaut) ou ON COMMIT PRESERVE ROWS.