如何获取带括号格式的列名与对应数据类型(DLL格式)
生成Oracle表列的DDL格式定义
你需要结合all_tab_cols中的data_length字段来拼接类型的长度部分,修改后的SQL语句如下:
SELECT column_name, CASE WHEN data_type IN ('VARCHAR2', 'CHAR', 'NVARCHAR2', 'NCHAR') THEN data_type || '(' || data_length || ')' WHEN data_type = 'NUMBER' THEN data_type || '(' || data_precision || ',' || data_scale || ')' ELSE data_type END AS data_type_def FROM all_tab_cols WHERE table_name = 'EMP' ORDER BY column_id;
说明:
- 对于字符类型(如VARCHAR2),拼接
data_length作为括号内的长度值; - 对于NUMBER类型,可拼接
data_precision(精度)和data_scale(小数位),不需要的话也可以只保留data_length; - 日期类型(DATE)等无需长度的类型,直接输出原数据类型;
- 加上
ORDER BY column_id能保证列顺序和表定义一致。
执行后会输出类似你期望的格式:
Name varchar2(255) Age varchar2(266) creation date
内容的提问来源于stack exchange,提问作者zud31507
相关产品推荐
相关产品推荐

