Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / неточность данных в syscatalog / 9 сообщений из 9, страница 1 из 1
25.03.2008, 19:29
    #35213339
Kru
Kru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неточность данных в syscatalog
У меня такая проблема, что запросы к syscatalog возвращают не совсем правильные ответы.
Есть подозрение, что метаданные не совсем правильные.

Может ли такое быть и как можно обновить метаданные?

Заранее большое спасибо
...
Рейтинг: 0 / 0
26.03.2008, 10:08
    #35213937
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неточность данных в syscatalog
KruЕсть подозрение, что метаданные не совсем правильные.Пример можно?
KruМожет ли такое быть и как можно обновить метаданные?Нет.
...
Рейтинг: 0 / 0
26.03.2008, 20:22
    #35216083
Kru
Kru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неточность данных в syscatalog
Mark Barinstein KruЕсть подозрение, что метаданные не совсем правильные.Пример можно?


Можно:

Код: plaintext
1.
2.
select * from SYSCAT.ROUTINEDEP r
where r.BSCHEMA = 'имя схемы'
and r.ROUTINENAME = 'имя процедуры'

Для простоты имя и специфик имя одинаковы.

Запрос возвращает 1 строку где BNAME содержит имя пакаджа.

Однако код процедуры содержит insert into schema_name.table1.. select from schema_name.table2 и тоже delete from schema_name.table3

Мне нужно написать такой запрос который бы возвращал table1, table2 и table3, т.к. процедура зависит от этих таблиц.

Это нужно для миграции некоторых процедур на другой сервер и они не смигрируют если предварительно не смигрировать все объекты от которых они зависят.

Заранее огромное спасибо
...
Рейтинг: 0 / 0
26.03.2008, 21:15
    #35216151
mustaccio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неточность данных в syscatalog
Kru

Запрос возвращает 1 строку где BNAME содержит имя пакаджа.

Однако код процедуры содержит insert into schema_name.table1.. select from schema_name.table2 и тоже delete from schema_name.table3

Мне нужно написать такой запрос который бы возвращал table1, table2 и table3, т.к. процедура зависит от этих таблиц.



Осталось сделать всего один шаг, чтобы, зная имя пакиджа, извлечь необходимую информацию из SYSCAT.PACKAGEDEP...
...
Рейтинг: 0 / 0
27.03.2008, 09:43
    #35216544
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неточность данных в syscatalog
KruМне нужно написать такой запрос который бы возвращал table1, table2 и table3, т.к. процедура зависит от этих таблиц.
Код: plaintext
1.
2.
3.
4.
5.
6.
select p.*
from SYSCAT.ROUTINEDEP r
join syscat.packagedep p on r.bschema=p.pkgschema and r.bname=p.pkgname
where r.BSCHEMA = 'имя схемы'
and r.ROUTINENAME = 'имя процедуры'
and r.btype='K'
...
Рейтинг: 0 / 0
27.03.2008, 18:33
    #35219027
Kru
Kru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неточность данных в syscatalog
Запрос к SYSCAT.PACKAGEDEP
Код: plaintext
1.
2.
3.
4.
5.
6.
select p.*
from SYSCAT.ROUTINEDEP r
join syscat.packagedep p on r.bschema=p.pkgschema and r.bname=p.pkgname
where r.BSCHEMA = 'имя схемы'
and r.ROUTINENAME = 'имя процедуры'
and r.btype='K'

возвращает BNAME = SYSDUMMY1

текст процедуры из запроса
Код: plaintext
1.
2.
3.
select r.TEXT
from SYSCAT.ROUTINES r
where r.ROUTINESCHEMA = 'схема'
and r.ROUTINENAME = 'имя процедуры'

содержит операции с постоянными таблицами из базы данных.

Я попробовал пересоздать процедуру из скрипта на другой базе, после чего выполнил запрос. Результат такой-же: BNAME = SYSDUMMY1

Попробовал выполнить запрос для произвольно взятой другой процедуры: он вернул список таблиц и даже индексов.

Странно, почему для 1й процедуры возвращает SYSDUMMY1.

Интересно это только у меня такая проблема?

Версия : select * from sysibm.sysversions --> 9010400

Всем заранее большой спасибо за отклик
...
Рейтинг: 0 / 0
02.04.2008, 19:00
    #35231080
Kru
Kru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неточность данных в syscatalog
Господа,
я обнаружил одну интересную особенность, что syscat не возвращает имена только тех таблиц которые в процедурах используются в запросам вместе со временными таблицами. Я сделал небольшой тестик, который демонстрирует это поведение.

Вопрос. Что это? Багафича?

Заранее очень благодарен за отклик

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
create table MY_SCHEMA.TEST_PROC_TAB (id smallint);

insert into MY_SCHEMA.TEST_PROC_TAB values  1 , 2 , 3 ;


CREATE PROCEDURE MY_SCHEMA.TEST_PROC()
    SPECIFIC TEST_PROC
    RESULT SETS  1 
    NOT DETERMINISTIC
    NULL CALL
    LANGUAGE SQL
BEGIN
  DECLARE OUT_CURSOR CURSOR WITH RETURN FOR
  select * from MY_SCHEMA.TEST_PROC_TAB;
  
  OPEN OUT_CURSOR;
END
;

CREATE PROCEDURE MY_SCHEMA.TEST_PROC_1()
    SPECIFIC TEST_PROC_1
    RESULT SETS  1 
    NOT DETERMINISTIC
    NULL CALL
    LANGUAGE SQL
BEGIN
   IF ( 1  =  2 ) THEN
     DECLARE GLOBAL TEMPORARY TABLE SESSION.t_temp(i smallint) NOT LOGGED ;
   END IF;

 P: BEGIN
  DECLARE OUT_CURSOR CURSOR WITH RETURN FOR
  select a.* from MY_SCHEMA.TEST_PROC_TAB a
  left join SESSION.t_temp t
  on a.id = t.i;

  OPEN OUT_CURSOR;
 END P; 
END
;


select p.* from SYSCAT.ROUTINEDEP d
join SYSCAT.ROUTINES r on d.ROUTINENAME = r.SPECIFICNAME
join syscat.packagedep p on d.bschema=p.pkgschema and d.bname=p.pkgname
and d.ROUTINESCHEMA = r.ROUTINESCHEMA
where r.ROUTINESCHEMA = 'MY_SCHEMA'
and  r.ROUTINENAME = 'TEST_PROC';

select p.* from SYSCAT.ROUTINEDEP d
join SYSCAT.ROUTINES r on d.ROUTINENAME = r.SPECIFICNAME
join syscat.packagedep p on d.bschema=p.pkgschema and d.bname=p.pkgname
and d.ROUTINESCHEMA = r.ROUTINESCHEMA
where r.ROUTINESCHEMA = 'MY_SCHEMA'
and  r.ROUTINENAME = 'TEST_PROC_1';

drop procedure MY_SCHEMA.TEST_PROC;

drop procedure MY_SCHEMA.TEST_PROC_1;

drop table MY_SCHEMA.TEST_PROC_TAB;
...
Рейтинг: 0 / 0
03.04.2008, 10:19
    #35231893
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неточность данных в syscatalog
KruГоспода,
я обнаружил одну интересную особенность, что syscat не возвращает имена только тех таблиц которые в процедурах используются в запросам вместе со временными таблицами. Я сделал небольшой тестик, который демонстрирует это поведение.

Вопрос. Что это? Багафича?Это фича.
Команды, в которых встречаются временные таблицы, не связываются статически.
А в системый каталог заносится информация только о статичеких командах.
...
Рейтинг: 0 / 0
03.04.2008, 18:14
    #35233948
Kru
Kru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
неточность данных в syscatalog
Mark Barinstein KruГоспода,
я обнаружил одну интересную особенность, что syscat не возвращает имена только тех таблиц которые в процедурах используются в запросам вместе со временными таблицами. Я сделал небольшой тестик, который демонстрирует это поведение.

Вопрос. Что это? Багафича?Это фича.
Команды, в которых встречаются временные таблицы, не связываются статически.
А в системый каталог заносится информация только о статичеких командах.

Спасибо.

Интересно, а как IBM предлагает определять постоянные объекты от которых зависит процедура в случае описанном выше.
Например, как быть если есть база данных с сотней таблиц и процедур и нужно часть из этих процедур смигрировать на другой сервер, причём смигрировать вместе с зависимыми таблицами (в более сложном случае ещё и смигрировать триггеры которые тоже зависят от таблиц, на которых тоже могут быть триггеры :-))) )

Задача кажется довольно стандартной и наверное есть хорошие решения. Подскажите, если есть возможность как лучше быть. Просматривать вручную код каждой из мигрируемых процедур уж очень трудоёмко.

Заранее огромное спасибо
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / неточность данных в syscatalog / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]