oracle 查所有表空间用户表视图序列号同义词 判断表是否有数据
在Oracle中,要查询所有用户表、视图、序列和同义词,以及判断表是否有数据,可以使用以下SQL查询:
SELECT
OBJECT_NAME,
OBJECT_TYPE,
CASE
WHEN OBJECT_TYPE = 'TABLE' THEN
(SELECT COUNT(*) FROM all_objects WHERE OWNER = USER AND OBJECT_NAME = OBJECT_NAME AND OBJECT_TYPE = 'TABLE' AND DATA_OBJECT_ID IS NOT NULL)
ELSE
0
END AS HAS_DATA
FROM
all_objects
WHERE
OWNER = USER
AND OBJECT_TYPE IN ('TABLE', 'VIEW', 'SEQUENCE', 'SYNONYM');
这个查询会返回当前用户下所有的表、视图、序列和同义词,并且会通过子查询标记出那些表有数据(即表中至少有一行数据)。子查询中,DATA_OBJECT_ID IS NOT NULL
条件用于确保只有当表实际包含数据时,COUNT(*)才不为0。
请注意,这个查询只会返回当前用户的对象信息,不会包含其他用户的对象。如果需要查询所有用户的对象,请相应地调整WHERE子句中的OWNER条件。
评论已关闭