Есть ли способ в DB2 найти временную таблицу из сеанса? - PullRequest
0 голосов
/ 12 июня 2019

Есть ли в 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 ]

2 голосов
/ 12 июня 2019

Объявленная глобальная временная таблица (DGTT) не будет отображаться в каталоге, это дизайн - поэтому вы не найдете DGTT в sysibm.systables.DGTT не может использоваться какой-либо другой программой, кроме той, которая ее объявляет - она ​​специфична для этого сеанса, поэтому нет смысла иметь ее в каталоге.

Если вы используете Db2 для z / OS (v10 или выше), или Db2-LUW, вам может потребоваться вместо этого «СОЗДАННАЯ глобальная временная таблица» (CGTT), которая использует другой синтаксис create global temporary table ... Эти каталогизированы , но вам необходимы соответствующие разрешения для созданияих.

См. документацию Db2-LUW .или для Db2 для z / OS здесь .

0 голосов
/ 12 июня 2019

Посмотрите на SYSIBMADM.ADMINTEMPTABLES административное представление.
Если вы хотите увидеть все DGTT, созданные в вашем сеансе, то:

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