下面的查詢生成了一條select陳述句。我希望查詢能夠執行正在生成的select陳述句,同時顯示TABLE_NAME, COLUMN_NAME, DATA_TYPE和MAX(COLUMN_SIZE),并通過TABLE_NAME對結果進行分組,并根據LOB列的最大尺寸對結果進行降序。
select table_name,
column_name,
data_type,
'select (max(length(' || COLUMN_NAME || '))/(1024) as "size in KB" from '
|| owners || '. ' || TABLE_NAME ||'; ' "querytogetlobsize"
from dba_tab_cols
where owner='& SCHEMA'
and data_type in ('CLOB','BLOB','NCLOB') 。
誰能幫我生成查詢。非常感謝您的幫助!
uj5u.com熱心網友回復:
這就是動態SQL。
SQL>/span> SET SERVEROUTPUT ON
SQL>
SQL> DECLARE<>
2 l_size NUMBER;
3 BEGIN
4 FOR cur_r
5 IN (SELECT table_name,
6 column_name,
7 data_type,
8 'select (max(length('/span>)
9 || COLUMN_NAME
10 | ')/(1024)) as "Size in KB" from '
11 || owner
12 || '. '
13 || TABLE_NAME querytogetlobsize
14 FROM all_tab_cols
15 WHERE owners = 'SCOTT'
16 AND data_type IN ('CLOB', 'BLOB', 'NCLOB')
17 LOOP
18 EXECUTE IMMEDIATE cur_r.querytogetlobsize
19 INTO l_size。
20
21 DBMS_OUTPUT.put_line (
22 RPAD (cur_r.table_name, 20, ' ')
23 || ' - ')
24 || RPAD (cur_r.column_name, 20, ' '/span>)
25 || ' : '
26 || TO_CHAR (l_size, '999G990D00'))。)
27 END LOOP;
28 end。
29 /
其結果是
DUGOTRAJNO - KRAJ_BLOB : 1.708, 98
DUGOTRAJNO - POCETAK_BLOB : 2.596,62.
OSOBA -PHOTO : 390,32
OSOBA -FAKSIMIL : 23,18
ZAHTJEV_PUTNI_NA - NALOG_BLOB : 16.286, 69
ZAHTJEV_PUTNI_NA - POZIV_BLOB : 25.609,50
PL/SQL 程式成功完成。
SQL>
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/325017.html
標籤:
上一篇:如何計算特定表的磁區?
