desc
is not DDL. It is a sqlplus command.
Use OCI8#describe_table
or dictionary views as follows:
conn.describe_table('TABLE_NAME').columns.each do |col|
puts format('%-30s %s', col.name, col.data_type_string)
end
or
conn.exec("select column_name, data_type
from all_tab_columns
where owner = 'OWNER_NAME'
and table_name = 'TABLE_NAME'
order by column_id") do |row|
puts format('%-30s %s', row[0], row[1])
end
The former works for tables, views and synonyms. The latter works only for tables.