mor*_*sil 5 java oracle plsql metadata jdbc
我的 Java 应用程序依赖于 Oracle 对象类型元数据。我使用oracle.jdbc.oracore.OracleTypeCHAR
类通过 JDBC 访问这些元数据。将数据库转换为 charset 后AL32UTF8
,该OracleTypeCHAR#getLength()
方法返回与 Oracle 对象类型中声明的结果相比乘以 4 的结果 - 例如:
some_attribute varchar2(10)
Run Code Online (Sandbox Code Playgroud)
40
当 lenght10
与前一个字符集一起返回时,将导致 lenght 。有没有办法在不解析OOT源代码的情况下从PL/SQL获取原始值?
字符列的字符长度可以在user_tab_columns.CHAR_LENGTH中找到,
select column_name, comments from all_col_comments where table_name = 'USER_TAB_COLUMNS';
COLUMN_NAME COMMENTS
TABLE_NAME Table, view or cluster name
COLUMN_NAME Column name
DATA_TYPE Datatype of the column
DATA_TYPE_MOD Datatype modifier of the column
DATA_TYPE_OWNER Owner of the datatype of the column
DATA_LENGTH Length of the column in bytes
DATA_PRECISION Length: decimal digits (NUMBER) or binary digits (FLOAT)
DATA_SCALE Digits to right of decimal point in a number
NULLABLE Does column allow NULL values?
COLUMN_ID Sequence number of the column as created
DEFAULT_LENGTH Length of default value for the column
DATA_DEFAULT Default value for the column
NUM_DISTINCT The number of distinct values in the column
LOW_VALUE The low value in the column
HIGH_VALUE The high value in the column
DENSITY The density of the column
NUM_NULLS The number of nulls in the column
NUM_BUCKETS The number of buckets in histogram for the column
LAST_ANALYZED The date of the most recent time this column was analyzed
SAMPLE_SIZE The sample size used in analyzing this column
CHARACTER_SET_NAME Character set name
CHAR_COL_DECL_LENGTH Declaration length of character type column
GLOBAL_STATS Are the statistics calculated without merging underlying partitions?
USER_STATS Were the statistics entered directly by the user?
AVG_COL_LEN The average length of the column in bytes
CHAR_LENGTH The maximum length of the column in characters
CHAR_USED C is maximum length given in characters, B if in bytes
V80_FMT_IMAGE Is column data in 8.0 image format?
DATA_UPGRADED Has column data been upgraded to the latest type version format?
HISTOGRAM
Run Code Online (Sandbox Code Playgroud)
使用此查询查找列的字符长度,
select
char_length
from
user_tab_columns
where
table_name = 'T' and column_name = 'SOME_ATTRIBUTE';
Run Code Online (Sandbox Code Playgroud)