DenisKozlov
2/27/2018 - 9:54 AM

Get field type

store formated field type into variable pk_type

Field is defined by variables: in_table_owner, in_table_name, in_pk_field

      sql_text := 'SELECT data_type || CASE
               WHEN data_precision IS NOT NULL
                    AND nvl(data_scale, 0) > 0 THEN
                ''('' || data_precision || '','' || data_scale || '')''
               WHEN data_precision IS NOT NULL
                    AND nvl(data_scale, 0) = 0 THEN
                ''('' || data_precision || '')''
               WHEN data_precision IS NULL
                    AND data_scale IS NOT NULL THEN
                ''(*,'' || data_scale || '')''
               WHEN char_length > 0 THEN
                ''('' || char_length || CASE char_used
                  WHEN ''B'' THEN
                   '' Byte''
                  WHEN ''C'' THEN
                   '' Char''
                  ELSE
                   NULL
                END || '')''
             END
        FROM dba_tab_cols
       WHERE owner = :in_table_owner
         AND table_name = UPPER(:in_table_name)
         AND column_name = UPPER(:in_pk_field)';
    
      EXECUTE IMMEDIATE sql_text
        INTO pk_type
        USING in_table_owner, in_table_name, in_pk_field;