如何在DB2中列出已声明的临时表

rqdpfwrv  于 2023-04-20  发布在  DB2
关注(0)|答案(2)|浏览(217)

您可以使用DECLARE GLOBAL TEMPORARY TABLE语句在DB2中创建会话临时表。有没有办法列出会话的SESSION模式中当前存在的所有表?注意 declared 全局临时表在SYSIBM.SYSTABLES中不存在。

qpgpyjmq

qpgpyjmq1#

简短的回答(据我所知)是否定的。声明的全局临时表(DGTT)不显示在目录中(正如你提到的)。
Created Global Temporary Tables可以,但它们略有不同(请查看this other Stack Overflow answer of mine以了解差异)。
如果你只需要知道表是否存在(例如,如果你试图稍后在应用程序中创建DGTT),你可以使用CONTINUE HANDLER

DECLARE CONTINUE HANDLER FOR SQLSTATE '42710' SET DGTT_FOUND=1;

根据您的平台,SQLSTATE关键字可能是可选的。

epggiuax

epggiuax2#

我知道这是一个古老的故事。我也在找这个,发现下面的查询有帮助:

db2 "select substr(tabname, 1, 20) tabname,
     substr(tabschema,1,10) tabschema, 
     temptabtype,
     tab_organization,
     substr(tbspace,1,12)tbspace
     from 
       table (sysproc.admin_get_temp_tables(sysproc.mon_get_application_handle(),'','')) gtt,
       syscat.tablespaces tbspace where (tabname = 'TEMP_T1' ) 
       and
       gtt.tbsp_id = tbspace.tbspaceid"

结果:

TABNAME              TABSCHEMA  TEMPTABTYPE TAB_ORGANIZATION TBSPACE     
-------------------- ---------- ----------- ---------------- ------------
TEMP_T1              SESSION    D           C                SYSTOOLSTMPS

  1 record(s) selected.

请注意,这可能取决于Db2版本。此信息仅在您的会话中有效。

相关问题