feat: Update FILE_MANAGER package to version 3.6.1 with fixes for CHAR/NCHAR/NVARCHAR2 column definitions
This commit is contained in:
@@ -1360,8 +1360,19 @@ AS
|
||||
rec.quoted_column_name || ' VARCHAR2(' || rec.data_length || ')'
|
||||
END
|
||||
-- Other character types (preserve original logic)
|
||||
WHEN rec.data_type IN ('CHAR', 'NCHAR', 'NVARCHAR2') THEN
|
||||
rec.quoted_column_name || ' ' || rec.data_type || '(' || rec.data_length || ')'
|
||||
-- MARS-1468: Fixed CHAR to use char_used/char_length (same as VARCHAR2 fix in MARS-1056)
|
||||
WHEN rec.data_type = 'CHAR' THEN
|
||||
CASE
|
||||
WHEN rec.char_used = 'C' THEN
|
||||
rec.quoted_column_name || ' CHAR(' || rec.char_length || ' CHAR)'
|
||||
WHEN rec.char_used = 'B' THEN
|
||||
rec.quoted_column_name || ' CHAR(' || rec.data_length || ' BYTE)'
|
||||
ELSE
|
||||
rec.quoted_column_name || ' CHAR(' || rec.data_length || ')'
|
||||
END
|
||||
-- MARS-1468: NCHAR/NVARCHAR2 - use char_length (data_length stores bytes in AL16UTF16, e.g. NCHAR(1) => data_length=2 but char_length=1)
|
||||
WHEN rec.data_type IN ('NCHAR', 'NVARCHAR2') THEN
|
||||
rec.quoted_column_name || ' ' || rec.data_type || '(' || rec.char_length || ')'
|
||||
WHEN rec.data_type = 'NUMBER' THEN
|
||||
rec.quoted_column_name || ' ' || rec.data_type ||
|
||||
CASE
|
||||
@@ -1396,8 +1407,13 @@ AS
|
||||
-- Other TIMESTAMP types (without timezone)
|
||||
-- SQL*Loader syntax: CHAR(length) DATE_FORMAT TIMESTAMP MASK "format" (not: TIMESTAMP 'format')
|
||||
rec.quoted_column_name || ' CHAR(35) DATE_FORMAT TIMESTAMP MASK ' || CHR(39) || NORMALIZE_DATE_FORMAT(GET_DATE_FORMAT(pTemplateTableName => pTemplateTableName, pColumnName => rec.column_name)) || CHR(39)
|
||||
WHEN rec.data_type IN ('CHAR', 'NCHAR', 'VARCHAR2', 'NVARCHAR2') THEN
|
||||
-- For CSV field definitions, use data_length for CHAR() specification
|
||||
WHEN rec.data_type IN ('VARCHAR2', 'CHAR') THEN
|
||||
-- MARS-1468: For CHAR use char_length when char semantics (C), otherwise data_length
|
||||
rec.quoted_column_name || ' CHAR(' ||
|
||||
CASE WHEN rec.char_used = 'C' THEN rec.char_length ELSE rec.data_length END
|
||||
|| ')'
|
||||
WHEN rec.data_type IN ('NCHAR', 'NVARCHAR2') THEN
|
||||
-- For CSV field definitions, use data_length for NCHAR/NVARCHAR2
|
||||
rec.quoted_column_name || ' CHAR(' || rec.data_length || ')'
|
||||
ELSE
|
||||
rec.quoted_column_name
|
||||
|
||||
Reference in New Issue
Block a user