SQL如何查询oracle库中每张表的表名及准确的数据量
时间: 2024-10-08 20:21:27 浏览: 54
Oracle将查询的结果放入一张自定义表中并再查询数据
5星 · 资源好评率100%
在Oracle数据库中,你可以使用动态SQL结合`DBMS_METADATA`包来查询所有表的表名和数据量。下面是一个示例,这个脚本会在当前用户权限范围内获取所有表的信息:
```sql
DECLARE
TYPE table_info IS TABLE OF VARCHAR2(30);
all_tables table_info;
BEGIN
FOR tab_name IN (SELECT 'TABLE_NAME' AS "NAME", 'DATA_SIZE' AS "TYPE" FROM USER_TAB_COLUMNS) LOOP
EXECUTE IMMEDIATE 'SELECT SUM(' || tab_name.TYPE || ') OVER () INTO :v_data_size
FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = :tab_name'
BULK COLLECT INTO all_tables
USING tab_name.NAME;
END LOOP;
FOR i IN 1..ALL_TABLES.COUNT LOOP
DBMS_OUTPUT.PUT_LINE(all_tables(i) || ': ' || ALL_TABLES(i+1)); --这里假设表名在索引i,数据量在索引i+1
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE ('Error occurred: ' || SQLERRM);
END;
/
```
在这个例子中,我们首先创建了一个类型来存储结果,然后遍历每一列(在这里就是表名和数据量),并执行一个动态SQL命令来计算每个表的数据总量。注意,这只是一个基本的示例,实际使用时可能需要调整以适应你的环境和需求。
阅读全文