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行。
我在看不正确的表以查找临时表吗?
谢谢!
答案 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();