DB2中有什么方法可以从会话中查找临时表?

时间:2019-06-12 16:53:10

标签: sql db2 db2-zos

DB2中有什么方法可以从会话中找到临时表?

我已经创建了一个与会话有关的临时表

DECLARE GLOBAL TEMPORARY TABLE SESSION.TEMP_TABLE_NAME
(   
        COL_1 VARCHAR(11) NOT NULL,
        COL_2 VARCHAR(10)
) ON COMMIT PRESERVE ROWS;

当我尝试创建查询时

select * from sysibm.systables where owner='SESSION' and name='TEMP_TABLE_NAME'

产生0行。

我在看不正确的表以查找临时表吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

已声明的全局临时表(DGTT)将不会出现在目录中,这是设计-因此您将无法在sysibm.systables中找到DGTT。 DGTT不能被其他任何程序使用,除非声明它的程序-它是特定于该会话的,因此将其包含在目录中没有任何价值。

如果您将Db2用于z / OS(v10或更高版本)或Db2-LUW,则可能需要使用不同语法create global temporary table ...的“创建的全局临时表”(CGTT),这些< 已分类,但是您需要相关权限才能创建它们。

请参见Db2-LUW documentation。 或Db2 for z / OS here

答案 1 :(得分:0)

查看SYSIBMADM.ADMINTEMPTABLES管理视图。
如果要查看在会话中创建的所有DGTT,则:

SELECT TABNAME
FROM SYSIBMADM.ADMINTEMPTABLES
WHERE TEMPTABTYPE='D'
AND APPLICATION_HANDLE=mon_get_application_handle();