举个例子给你参考一下。
exec sql performing myloop.
SELECT A.TABLESPACE,
A.SIZE_KB,
A.FREE_KB,
B.SEGMENTS,
B.EXTENTS,
A.FRAGMENTS
FROM (SELECT SIZE_TABLE.TABLESPACE,
SIZE_TABLE.SIZE_KB,
FREE_TABLE.FREE_KB,
FREE_TABLE.FRAGMENTS
FROM (SELECT TABLESPACE_NAME TABLESPACE,
SUM(BYTES/1024) SIZE_KB
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME)
SIZE_TABLE,
(SELECT TABLESPACE_NAME TABLESPACE,
SUM(BYTES/1024) FREE_KB,
COUNT(TABLESPACE_NAME) FRAGMENTS
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME)
FREE_TABLE
WHERE SIZE_TABLE.TABLESPACE=FREE_TABLE.TABLESPACE) A,
(SELECT TABLESPACE_NAME TABLESPACE,
COUNT(DISTINCT SEGMENT_NAME) SEGMENTS,
SUM(EXTENTS) EXTENTS
FROM DBA_SEGMENTS
GROUP BY TABLESPACE_NAME) B
WHERE A.TABLESPACE = B.TABLESPACE
INTO :ITAB_A
ENDEXEC.