gpt4 book ai didi

sql - 循环遍历多个表以执行相同的查询

转载 作者:行者123 更新时间:2023-12-04 14:01:28 24 4
gpt4 key购买 nike

我有一个数据库,其中每天都会创建一个表来记录流程实例。
这些表被标记为 MESSAGE_LOG_YYYYMMDD

目前我想对所有这些表顺序执行相同的查询。
我写了下面的 PL/SQL,但在第 10 行卡住了。如何针对此处的所有表成功执行 SQL 语句?

DECLARE
CURSOR all_tables IS
SELECT table_name
FROM all_tables
WHERE TABLE_NAME like 'MESSAGE_LOG_2%'
ORDER BY TABLE_NAME ;

BEGIN
FOR msglog IN all_tables LOOP
SELECT count(*) FROM TABLE msglog.TABLE_NAME ;
END LOOP;
END;
/

最佳答案

最好将表重新构建为一个表,其中包含进程日志的关键列而不是单个表。

话虽如此,您可以使用动态 SQL:

DECLARE
CURSOR all_tables IS
SELECT table_name
FROM all_tables
WHERE TABLE_NAME like 'MESSAGE_LOG_2%'
ORDER BY TABLE_NAME ;

row_count pls_integer;
BEGIN
FOR msglog IN all_tables LOOP
EXECUTE IMMEDIATE "SELECT COUNT(*) FROM " || msglog.TABLE_NAME INTO row_count;
END LOOP;
END;
/

关于sql - 循环遍历多个表以执行相同的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5326698/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com