Мне нужно выбрать все количество строк таблицы из базы данных db2
.
У меня есть запрос на выбор всей схемы и имени таблицы:
select rtrim(tabschema)||'.'||rtrim(tabname) as tableName from syscat.tables where tabschema = 'COM' order by tabname;
Этот запрос дает мне список имен таблиц базы данных.
Я бы хотел сделать что-то вроде:
select count(*) from tableFromTheFirstQuery
Где tableFromThePreviousQuery заменяется tableName моего первого запроса.
Я не могу сделать как
select count(*) from (select rtrim(tabschema)||'.'||rtrim(tabname) as tableName from syscat.tables where tabschema = 'COM' order by tabname);
Я получу только результат подсчета моего первого запроса.
Я не уверен, что способ существует или нет. В основном мне нужно сохранить все подсчеты строк таблицы в текстовом файле, прежде чем выполнять действия DR.
Добрый совет
1 ответ
Вы можете использовать составной оператор, подобный этому
CREATE TABLE COUNT_ROWS (
TABSCHEMA VARCHAR(128) NOT NULL
, TABNAME VARCHAR(128) NOT NULL
, ROW_COUNT BIGINT
)
@
BEGIN
FOR C AS cur CURSOR WITH HOLD FOR
SELECT 'INSERT INTO COUNT_ROWS SELECT ''' || TABSCHEMA || ''',''' || TABNAME || ''', COUNT(*) FROM '
|| '"' || TABSCHEMA || '"."' || TABNAME || '"' AS S
FROM SYSCAT.TABLES
WHERE TYPE = 'T' AND TABSCHEMA NOT LIKE 'SYS%'
WITH UR
DO
EXECUTE IMMEDIATE C.S;
COMMIT;
END FOR;
END
@
SELECT * FROM COUNT_ROWS
@
Обратите внимание, что вам нужно будет использовать @
в качестве терминатора вашего оператора, чтобы запустить вышеприведенное.
Похожие вопросы
Новые вопросы
count
Количество относится к числу объектов в коллекции. Это также широко используемая функция SQL, которая подсчитывает количество строк.