【发布时间】:2021-11-12 03:48:01
【问题描述】:
以下查询生成select 语句。而不是生成select 语句,我希望查询执行正在生成的select 语句,并显示TABLE_NAME, COLUMN_NAME, DATA_TYPE 和MAX(COLUMN_SIZE),并将结果按TABLE_NAME 和sort 分组在descending 的顺序中,基于LOB column 的max 大小。
select table_name,
column_name,
data_type,
'select (max(length(' || COLUMN_NAME || '))/(1024)) as "Size in KB" from '
|| owner || '.' || TABLE_NAME ||';' "querytogetlobsize"
from dba_tab_cols
where owner='&SCHEMA'
and data_type in ('CLOB','BLOB','NCLOB');
谁能帮我生成查询。非常感谢您提前提供的帮助!
【问题讨论】:
-
动态查询不能单步执行。你不能在 SQL 中做到这一点。 PLSQL 会是你的选择吗?
-
这在 SQL 中是不可能的。您不能选择元数据(表和列名称)并在同一查询中使用此信息从表和列中选择数据。你可以做的,艰难的,是生成单个查询而不是多个单独的查询。但是“按 table_name 对结果进行分组”和“显示 COLUMN_NAME”是什么意思?如果按表名分组,每个表只有一行,那么你会选择其中的哪一列?
标签: sql oracle plsql oracle12c