DB2, хранимые процедуры, ссылающиеся на имя таблицы

В DB2 — есть ли какой-либо оператор SQL, который при выполнении возвращает список хранимых процедур, ссылающихся на имя таблицы.


person Kris    schedule 31.07.2015    source источник
comment
Какая версия DB2 и платформа?   -  person mustaccio    schedule 31.07.2015
comment
Версия: DB2 v9.5.0.8   -  person Kris    schedule 31.07.2015
comment
... обратите внимание, что любой возвращенный список будет правильным, только если вы не реализовали процедуры определенным образом; например, выбор таблицы из syscat для запроса сделает ссылки непрозрачными...   -  person Clockwork-Muse    schedule 02.08.2015
comment
Возможный дубликат Как в db2 найти все хранимые процедуры, содержащие заданный текст   -  person Clockwork-Muse    schedule 02.01.2019


Ответы (2)


Есть вид каталога SYSCAT.ROUTINEDEP:

SELECT R.ROUTINESCHEMA, R.ROUTINENAME 
FROM SYSCAT.ROUTINEDEP D, SYSCAT.ROUTINES R
WHERE D.ROUTINESCHEMA = R.ROUTINESCHEMA AND D.SPECIFICNAME = R.SPECIFICNAME 
AND D.BTYPE IN ('T','V','A') 
AND D.BSCHEMA = 'MYTABLESCHEMA' AND D.BNAME = 'MYTABLENAME'

Имейте в виду, что таблицы, на которые ссылается динамический SQL, не будут отображаться в SYSCAT.ROUTINEDEP.

person mustaccio    schedule 31.07.2015

Для этого можно использовать представление каталога SYSCAT.ROUTINEDEP:

select specificname, routineschema from syscat.routinedep where btype='F' and bschema='yourschema' and bname='yourtable'

Это вернет все подпрограммы (включая хранимые процедуры), зависящие от этой ссылочной таблицы, указанной в yourschema.yourtable.

person data_henrik    schedule 31.07.2015