ODBCでSQL Serverに繋いでいる。
DB[:table_name]でアクセスすると、「TABLE_NAMEというオブジェクトはないんじゃが?」とSQL Serverに怒られた。なぜ大文字でアクセスしたし。
接続されるDBに依って、大文字にする場合もあるとドキュメントに書いてある。どのように解釈されるかは、DB.literal(:sym)のようにすれば確認出来る。
# coding: windows-31j require 'sequel' DB = Sequel.odbc("MSDB", :user=>'hoge', :password=>'fuga') p DB.literal(:name) # => "\"NAME\""
う・・・大文字だ。ケースを区別するSQL Serverであることがわからないんだろうか。ソースを観てみると、SQL Serverはmssqlという名前で区別されているようだ。
DB = Sequel.odbc("MSDB", :user=>'hoge', :password=>'fuga', :db_type => "mssql") p DB.literal(:name) # => "[NAME]"
あー、SQL Serverですね。すごくSQL Serverです・・・が大文字に変換されたままじゃないか。
いろいろ彷徨ったあげく、
http://sequel.jeremyevans.net/rdoc/classes/Sequel.html#method-c-identifier_input_method-3D
を見つけた。
DB = Sequel.odbc("MSDB", :user=>'hoge', :password=>'fuga', :db_type => "mssql") DB.identifier_input_method = nil p DB.literal(:name) # => "[name]"
うまくいったけど、これが正しいやり方なのかどうかは自信がない