2013-11-28 78 views
1

感謝您的時間!Ruby OCI8 desc table_name

我使用OCI8連接Oracle並執行一些sql語句。

但是當我做如下:

conn = OCI8.new('ci/[email protected]/orcl') 
cursor = conn.parse('desc table_name') 
cursor.exec 

它引發的錯誤:

OCIError: ORA-00900: invalid SQL statement 

我問過一些DBA,他們告訴我說,desc是數據定義語言(DDL)這不是一個普通的SQL,並且可能是導致此問題的原因。

我使用Ruby作爲我的腳本語言。我怎麼能解決這個問題?

回答

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 

表,視圖和同義詞,前者的作品。後者僅適用於表格。

+0

感謝您的回答。我意識到我錯了。 – mCY