谢谢你的时间!
我使用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作为我的脚本语言。我怎么能解决这个问题?
答案 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
前者适用于表格,视图和同义词。后者仅适用于表格。