- PR -

続ODPを使いたい

1
投稿者投稿内容
パンダ
ベテラン
会議室デビュー日: 2004/03/24
投稿数: 59
投稿日時: 2004-05-11 17:20
前にあったスレッドで同じような事で困っています。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=5170&forum=7&8

ODPを使用してOracleにアクセスしています。
「SELECT TANTO_CODE FROM 担当者マスタ」はOKですが
「SELECT 担当者コード FROM 担当者マスタ」はdatareader = cmd.ExecuteReader
の所で「ORA-00936 式がありません」というエラーが発生。
SELECTの項目名を漢字にするとNGになります。テーブル名は漢字でもOK

対策も前スレッドと同じで「SELECT "担当者コード" FRM 担当者マスタ」
(日本語列名を2重引用符でくくる)とOKです。

ただ、別の環境のマシンでテストを行うと「SELECT 担当者コード FROM 担当者マスタ」
だけでエラーになりません。

ここで質問ですが
質問1.ODPの動作環境によって日本語列名を2重引用符でくくる必要があるので
 しょうか?
質問2.列名を2重引用符でくくる意味合いって何ですか?
 今までのOracleの開発で項目名を2重引用符でくくったような経験はありません。
質問3.Oracleの開発で日本語列名の時は2重引用符でくくった方がベストなのでしょうか?


どうかよろしくお願いします。

きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-05-11 17:58
パンダさん、こんばんは。

引用:

質問3.Oracleの開発で日本語列名の時は2重引用符でくくった方がベストなのでしょうか?


というよりも、ベストは日本語名を使わない事です。
パンダ
ベテラン
会議室デビュー日: 2004/03/24
投稿数: 59
投稿日時: 2004-05-11 18:11
引用:

きくちゃんさんの書き込み (2004-05-11 17:58) より:
パンダさん、こんばんは。

引用:

質問3.Oracleの開発で日本語列名の時は2重引用符でくくった方がベストなのでしょうか?


というよりも、ベストは日本語名を使わない事です。




確かにそうかもしれませんが、既に開発が進んでいるところなので
逆戻りができない状態で困っています。
何かご存知であれば教えて下さい。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-05-11 18:30
パンダさん、こんばんは。

二重引用符の意味については、Oracle の マニュアル(「SQL言語リファレンス」)の、オブジェクトの命名規則のところに詳しく説明されています。
七味唐辛子
ぬし
会議室デビュー日: 2001/12/25
投稿数: 660
投稿日時: 2004-05-11 18:51
引用:

パンダさんの書き込み (2004-05-11 18:11) より:
確かにそうかもしれませんが、既に開発が進んでいるところなので
逆戻りができない状態で困っています。
何かご存知であれば教えて下さい。




ビューを使ってアプリからは ビューを参照するという方法もあります。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-05-11 19:23
Oracleの、「Oracle9i SQLリファレンス. リリース2(9.2)」というドキュメントにこんなことが書いてありました。
引用:

表や列などのOracle 識別子名は、30 文字以内に制限されています。先頭文字は英字である必要がありますが、それ以外は、英字、数字、ドル記号($)、シャープ記号(#)およびアンダースコア(_)を任意に組み合せて指定できます。
ただし、Oracle の識別子を二重引用符(")で囲むと、すべての有効な文字(空白を含む)を組み合せて指定できます。
Oracle の識別子は、二重引用符で囲んだとき以外は、大文字、小文字を区別しません。


私も二重引用符で囲まなかったことがありますが、たまたまその環境がうまく解釈してくれたということではないでしょうか。
日本語名は必ず二重引用符でくくってください。
1

スキルアップ/キャリアアップ(JOB@IT)