URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9392
[ Назад ]

Исходное сообщение
"перебор таблиц в цикле"

Отправлено nastr , 23-Фев-12 19:20 
Задача следующая, в БД есть таблицы с PCEF_USERBASE_00 по PCEF_USERBASE_99.
нужно посчитать сколько строк в каждой таблице и вывести в следующем формате:
название таблицы                   количество строк
PCEF_USERBASE_хх                   4888

во-первых я не знаю как запросить вывод имени таблицы.
я решил задачу так:
select count(*) from PCEF_USERBASE_00 union
select count(*) from PCEF_USERBASE_01 union
...........................................
select count(*) from PCEF_USERBASE_99

итого 100 строк, не очень изящно.

хочу решить задачу через цикл, как то так:
declare
       i number := 0;
       j varchar2(10);
       v_sql varchar2(2000);
     begin
          for i in 1..99 loop
               if i < 10 then
                    j := '0'||i;
               else
                    j := i;
               end if;
               v_sql := 'select count(*) from PCEF_UserBase_'||j||'';
              execute immediate v_sql;
           end loop;
           commit;
     end;
/

Подскажите пожалуйста, как вывести имена таблиц, и как правильно реализовать цикл?


Содержание

Сообщения в этом обсуждении
"перебор таблиц в цикле"
Отправлено PavelR , 23-Фев-12 19:56 

> Подскажите пожалуйста, как вывести имена таблиц, и как правильно реализовать цикл?

Вы, надеюсь понимаете, что в мире больше чем одна СУБД ?

Я, конечно, понимаю, что это вопрос по Oracle, но лезть в справочники, вспоминать как получить перечень таблиц базы данных, не хочется, если вопрошающий не прикладывает усилий чтобы помочь отвечающим.



"перебор таблиц в цикле"
Отправлено nastr , 23-Фев-12 20:01 
> Вы, надеюсь понимаете, что в мире больше чем одна СУБД ?
> Я, конечно, понимаю, что это вопрос по Oracle

Извиняюсь, СУБД действительно Oracle Release 11.1.0.7.0


"перебор таблиц в цикле"
Отправлено PavelR , 23-Фев-12 20:32 
>> Вы, надеюсь понимаете, что в мире больше чем одна СУБД ?
>> Я, конечно, понимаю, что это вопрос по Oracle
> Извиняюсь, СУБД действительно Oracle Release 11.1.0.7.0

http://lmgtfy.com/?q=oracle+%D0%BF%D0%BE...


"перебор таблиц в цикле"
Отправлено nastr , 23-Фев-12 22:00 
select table_name,num_rows from USER_TABLES where table_name like '%PCEF_USERBASE_%';

"перебор таблиц в цикле"
Отправлено PavelR , 24-Фев-12 10:50 
> select table_name,num_rows from USER_TABLES where table_name like '%PCEF_USERBASE_%';

первый % не нужен.

select table_name,num_rows from USER_TABLES where table_name like 'PCEF_USERBASE_%';