Змінюй хід війни! Допомагай ЗСУ!
  • Знижка на баннерну рекламу 30%! Банер на всіх сторінках сайту, в мобільній та десктопній версії за 14 тис. грн на місяць. Статистика сайту. Контакт: [email protected]

sql,oracle, помогите...

  • Автор теми Автор теми DiTT
  • Дата створення Дата створення
Статус: Офлайн
Реєстрація: 10.12.2008
Повідом.: 1050
sql,oracle, помогите...

Есть такая задача: посчитать строки во всех таблицах схемы и вывести эти значения в другую таблицу.

Собственно я делал так:

DECLARE
CURSOR get_strok IS
SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER = UPPER('testers');

v_gt ALL_TABLES.TABLE_NAME%TYPE;
BEGIN
OPEN get_strok;

LOOP
EXIT WHEN get_strok%NOTFOUND;
FETCH get_strok INTO v_gt;

INSERT INTO qwe (s) /*ранее созданная таблица*/
select COUNT (*) from v_g;

END LOOP;
CLOSE get_strok;
END;

Но уперся в то, что не могу обратиться к таблице используя переменную (выделил красным цветом).

Собственно вопрос: как обратиться к таблице с помощью переменной или решить поставленную задачу другим способом?

Заранее всем большое спасибо.
 
Останнє редагування:
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.
 
Ну тогда получается что -то типа:

DECLARE
TYPE GenericCursor IS REF CURSOR;
c1 GenericCursor;
sel VARCHAR2(4000);
result VARCHAR2(200);
BEGIN
sel := 'select count(*) from ||table_name|| ';', '''||table_name||''' from ALL_TABLES WHERE OWNER = UPPER('testers') ' ;

OPEN c1 FOR sel;

LOOP
EXIT WHEN c1%NOTFOUND;

FETCH c1 INTO result;
INSERT INTO qwe (s)
VALUEs (result);

END LOOP;
CLOSE c1;
END;


Но у меня проблемы с запросом. Он должен быть каким-то таким, как я понимаю, но как мне обратиться к таблице через список всех таблиц? Я предполагаю что как-то через конкатенацию....но как?
 
А чем тебя NUM_ROWS из ALL_TABLES не устраивает?
 
Назад
Зверху Знизу