Задача следующая, в БД есть таблицы с 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;
/Подскажите пожалуйста, как вывести имена таблиц, и как правильно реализовать цикл?
> Подскажите пожалуйста, как вывести имена таблиц, и как правильно реализовать цикл?Вы, надеюсь понимаете, что в мире больше чем одна СУБД ?
Я, конечно, понимаю, что это вопрос по Oracle, но лезть в справочники, вспоминать как получить перечень таблиц базы данных, не хочется, если вопрошающий не прикладывает усилий чтобы помочь отвечающим.
> Вы, надеюсь понимаете, что в мире больше чем одна СУБД ?
> Я, конечно, понимаю, что это вопрос по OracleИзвиняюсь, СУБД действительно Oracle Release 11.1.0.7.0
>> Вы, надеюсь понимаете, что в мире больше чем одна СУБД ?
>> Я, конечно, понимаю, что это вопрос по Oracle
> Извиняюсь, СУБД действительно Oracle Release 11.1.0.7.0
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_%';первый % не нужен.
select table_name,num_rows from USER_TABLES where table_name like 'PCEF_USERBASE_%';