sqlplus -S SYSADM/SYSADM@10.138.1.2:1521/HR92UAT <<EOF>>oracle_to_ods_field_info.sql
SELECT 'var ' || '$' ||'{sync_table}' || ':tablepro=tablepro("' || '$' || '{sync_table}",Array(' " " FROM dual
UNION ALL
select '"' || t.column_name || '"' || '->' || '"' || case
when c.DATA_TYPE in ('CHAR',
'NCHAR',
'VARCHAR',
'VARCHAR2',
'NVARCHAR2',
'DATE',
'TIMESTAMP',
'TIMESTAMP WITH TIME ZONE',
'TIMESTAMP WITH LOCAL TIME ZONE',
'INTERVAL YEAR TO MOTH',
'INTERVAL DAY TO SECOND',
'BLOB',
'CLOB',
'NCLOB',
'BFILE',
'RAW',
'LONG RAW') then
' STRING '
WHEN C.DATA_TYPE = 'INTEGER' THEN
' BIGINT '
WHEN C.DATA_TYPE = 'NUMBER' THEN
(CASE
WHEN C.DATA_SCALE IS NOT NULL and c.DATA_SCALE<>0 THEN
' DECIMAL(' || C.DATA_PRECISION || ',' || C.DATA_SCALE || ') '
WHEN C.DATA_PRECISION < 3 THEN
' TINYINT '
WHEN C.DATA_PRECISION < 5 THEN
' SMALLINT '
WHEN C.DATA_PRECISION < 10 THEN
' INT '
ELSE
' BIGINT '
END)
WHEN C.DATA_TYPE IN
('BINARY_FLOAT', 'BINARY_DOUBLE', 'FLOAT') THEN
' DOUBLE '
ELSE
' STRING '
END ||'"' ||
regexp_replace(t.comments,
'[' || chr(10) || chr(13) || chr(9) || chr(32) || ']',
'') || ',' " "
from all_COL_COMMENTS t, all_TAB_COLUMNS c
where c.column_name = t.column_name
and c.owner = t.owner
and c.TABLE_NAME = t.TABLE_NAME
and c.owner = 'SYSADM'
and c.TABLE_NAME = '${sync_table}'
UNION ALL
SELECT '))' FROM dual;
EOF