Ruby OCI8 desc table_name

时间:2013-11-28 10:06:20

标签: ruby oracle oci8

谢谢你的时间!

我使用OCI8连接Oracle并执行一些sql语句。

但是,当我这样做时:

conn = OCI8.new('ci/a@localhost/orcl')
cursor = conn.parse('desc table_name')
cursor.exec

它引发了错误:

OCIError: ORA-00900: invalid SQL statement

我问了一些DBA,他们告诉我desc是数据定义语言(DDL),这不是一个普通的SQL,可能是造成这个问题的原因。

我使用Ruby作为我的脚本语言。我怎么能解决这个问题?

1 个答案:

答案 0 :(得分:1)

desc DDL。这是一个sqlplus命令。

使用OCI8#describe_table或字典视图,如下所示:

conn.describe_table('TABLE_NAME').columns.each do |col|
   puts format('%-30s %s', col.name, col.data_type_string)
end

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

前者适用于表格,视图和同义词。后者仅适用于表格。