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