1. sqlplus -S SYSADM/SYSADM@10.138.1.2:1521/HR92UAT <<EOF>>oracle_to_ods_field_info.sql
    2. SELECT 'var ' || '$' ||'{sync_table}' || ':tablepro=tablepro("' || '$' || '{sync_table}",Array(' " " FROM dual
    3. UNION ALL
    4. select '"' || t.column_name || '"' || '->' || '"' || case
    5. when c.DATA_TYPE in ('CHAR',
    6. 'NCHAR',
    7. 'VARCHAR',
    8. 'VARCHAR2',
    9. 'NVARCHAR2',
    10. 'DATE',
    11. 'TIMESTAMP',
    12. 'TIMESTAMP WITH TIME ZONE',
    13. 'TIMESTAMP WITH LOCAL TIME ZONE',
    14. 'INTERVAL YEAR TO MOTH',
    15. 'INTERVAL DAY TO SECOND',
    16. 'BLOB',
    17. 'CLOB',
    18. 'NCLOB',
    19. 'BFILE',
    20. 'RAW',
    21. 'LONG RAW') then
    22. ' STRING '
    23. WHEN C.DATA_TYPE = 'INTEGER' THEN
    24. ' BIGINT '
    25. WHEN C.DATA_TYPE = 'NUMBER' THEN
    26. (CASE
    27. WHEN C.DATA_SCALE IS NOT NULL and c.DATA_SCALE<>0 THEN
    28. ' DECIMAL(' || C.DATA_PRECISION || ',' || C.DATA_SCALE || ') '
    29. WHEN C.DATA_PRECISION < 3 THEN
    30. ' TINYINT '
    31. WHEN C.DATA_PRECISION < 5 THEN
    32. ' SMALLINT '
    33. WHEN C.DATA_PRECISION < 10 THEN
    34. ' INT '
    35. ELSE
    36. ' BIGINT '
    37. END)
    38. WHEN C.DATA_TYPE IN
    39. ('BINARY_FLOAT', 'BINARY_DOUBLE', 'FLOAT') THEN
    40. ' DOUBLE '
    41. ELSE
    42. ' STRING '
    43. END ||'"' ||
    44. regexp_replace(t.comments,
    45. '[' || chr(10) || chr(13) || chr(9) || chr(32) || ']',
    46. '') || ',' " "
    47. from all_COL_COMMENTS t, all_TAB_COLUMNS c
    48. where c.column_name = t.column_name
    49. and c.owner = t.owner
    50. and c.TABLE_NAME = t.TABLE_NAME
    51. and c.owner = 'SYSADM'
    52. and c.TABLE_NAME = '${sync_table}'
    53. UNION ALL
    54. SELECT '))' FROM dual;
    55. EOF