在DB2中有没有办法从会话中找到临时表?

pwuypxnk  于 2022-11-07  发布在  DB2
关注(0)|答案(2)|浏览(214)

在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行。
我查找临时表的表不正确吗?
谢谢你!

2nc8po8w

2nc8po8w1#

声明的全局临时表(DGTT)不会出现在目录中,这是设计-所以你不会在sysibm. systables中找到DGTT。DGTT不能被任何其他程序使用,除了声明它的程序-它是特定于那个会话的,因此在目录中拥有它没有任何价值。
如果您正在使用Db2 for z/OS(v10或更高版本)或Db2-LUW,则可能需要使用不同语法create global temporary table ...的“CREATED global temporary table”(CGTT)。这些 * 已 * 编入目录,但您需要相关权限才能创建它们。
请参阅Db2-LUW documentation.或以了解z/OS here得Db2.

4ioopgfo

4ioopgfo2#

查看SYSIBMADM.ADMINTEMPTABLES管理视图。
如果要查看在会话中创建的所有DGTT,请执行以下操作:

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

相关问题