質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.49%

  • Oracle Database 11g

    195questions

    Oracle DatabaseはRDBMSの商品です。具体的な発売商品として知られているのが、 Oracle9i、Oracle10g、Oracle 11gとOracle 12cです。

  • VC++

    137questions

    VC++ (Visual C++) とは、Microsoft製のC++のための統合開発環境です。

VC6.0でOracle11gのDBに登録したい

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 896

k47

score 6

前提・実現したいこと

現在、VB6.0,VC++6.0で作成されているシステムのリプレイスを行っています。
現行はOracle10gを使用しているのですが、リプレイスを機にOracel11gにすることになりました。

VB.netやC#は開発したことがあるのですが、C++は全く触ったことが無い状態です。
(その為ソースファイルが複数あるのも「?」な状態です。)

現行動いているシステムのソースはあるのですが、このシステムは他社さんが開発したもので、
ソースを元に作業を行っています。
現行動いているシステムに一部機能の追加をし、Oracle11gとのやり取りを行うようにしたいです。
この時、VC6.0でDLLを作成し、VB6.0のアプリから使用しています。
DLLでOracleへのデータ登録や参照等を行っているので、その部分を修正すれば動くだろうと
思い修正をしているのですが、ビルドは通るのですが、実行するとエラーとなってしまいます。
どこを修正すればいいのかもわからない状態となってしまいました。

そもそもの修正箇所や作業の仕方が間違っている可能性もありますので、
その点のご指摘でも構いませんので、ご協力をお願い致します。
また情報が不足していることもあると思いますので、その点もご指摘ください。

発生している問題・エラーメッセージ

SQL-02115: コード解析の問題 -- COMMON_NAMEの使用法をチェックしてください

試したこと

今回の修正は、得意先マスタにカラムが追加されたので、その対応をしようとしています。
プロジェクトを開き、該当のSQLが記載されているファイル(.c)のSQL文を修正し、ヘッダーファイル(.h)
に宣言されているstructに項目を追加しました。
ResourceFileとしてorasql10.libとorasqx10.libがありましたのでそれを11gのものに変更しました。

最初は、上記を直してもビルドが通らず、sqlca.hのファイルがインクルードできないとなっていたのですが、
プロジェクトの設定からC/C++のプリプロセッサのインクルードファイルのパスに、Oracleのフォルダを
指定したら、ビルドが通るようになりました。
ただ、VB6.0のexeから実行すると上記のエラーになります。

プロジェクトのFileViewには.cと.hのファイルはあるのですが、この他に.pcという拡張子のファイルも
フォルダには存在します。

pcファイルについてググると Pro*c という単語が出てくるのですが、具体的にどのように修正するのかが
分かりませんでした。

どこをどのように修正すればいいのでしょうか?

補足情報(言語/FW/ツール等のバージョンなど)

言語:VC6.0
DB:Oracle11g
PC:Windwos7

追記

takasima20 様
コメントありがとうございます。
Oracle10gとOracle11gは別のサーバーです。また、今回起きている事象は、開発PCでのことですので、
Oracle11gのみインストールされています。
また、Oracleのクライアントツールからの接続は確認しています。

KoichiSugiyama 様
コメントありがとうございます。
修正前と修正後のSQLになります。

修正前
sqlstm.stmt = "insert into 得意先マスタ values (:b0,:b1,:b2,:b3,:b4,:b5,Sysdate)";

修正後
sqlstm.stmt = "insert into 得意先マスタ (得意先NO, 得意先名, 本部NO, 取引先NO, 店NO, 更新プロセス, 更新日時, ラベルパターン) values (:b0,:b1,:b2,:b3,:b4,:b5,Sysdate,:b6)";

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • takasima20

    2016/04/15 22:08

    Oracle10gとOracle11gは同じサーバーですか? また、そのPCにインストールされているOracleのクライアントツールからOracle11gに接続することはできますか?

    キャンセル

  • KoichiSugiyama

    2016/04/16 13:58 編集

    書かれている内容を見る限り、SQL文の修正が怪しいのですが、実際にどういうコードを追加したか、等を可能な範囲で示していただけるとアドバイスが多く集まるのではないかと思います。 また、修正後のSQLと同じものをコマンドラインから手打ちで送るとどういう結果になるかも合わせて調べてみてはどうでしょうか。

    キャンセル

回答 3

check解決した方法

0

遅くなってしまいました。
日本語になっているところを二重引用符で括っても同じくエラーになりました。

今回は、解決策が見つからないと判断し、VB.Netでの作り直しをすることになりました。

回答いただいた皆様ありがとうございました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

プログラムからの接続はODBCを使ってますかね。
その場合ODBCの設定は大丈夫ですか?

というのがエラーから疑われるのですが…

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/18 19:36

    コメントありがとうございます。

    接続にはODBCを使用しています。
    設定は大丈夫だと思います。修正箇所を通らない処理(DLLは使用します)の場合は
    問題なくDBに登録ができる状態です。

    キャンセル

  • 2016/04/18 20:07

    となると気休めにカラム名をダブルクォーテーションで(個々に)
    囲むくらいかなあ。ちなみに、半角英字の場合は【正確に】
    データベースと同じ表記にしてください。

    キャンセル

  • 2016/04/19 12:59

    コメントありがとうございます。
    ダブルクォーテーションですね!やってみます!

    キャンセル

0

takasima20さんも書かれていますが、テーブル名やカラム名に日本語を使用しているようなので、そのあたりが怪しそうな感じがしています。
Oracleではオブジェクト名にマルチバイト文字を使用するには二重引用符("")で囲むことが仕様となっています。見当違いならすみません。
ただ、囲まなくても動いてしまうことがままあるようですが。。。

今回の場合はもともと他社が開発したものとのことなのでなんですが、スキーマ・オブジェクト名に日本語を使用することは、トラブルの温床にもなりやすいので、正直なところ避けたほうが賢明だと思います。ローマ字で何の不便もないよねって思います。

オブジェクト名に日本語を使うことの是非

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/19 13:01

    コメントありがとうございます。
    私も最初見たとき、何で日本語?って思ったんですが、現行の他のシステムもそのまま使用したりするので、テーブルの変更は最小限にしたいんです。
    二重引用符試してみます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.49%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Oracle Database 11g

    195questions

    Oracle DatabaseはRDBMSの商品です。具体的な発売商品として知られているのが、 Oracle9i、Oracle10g、Oracle 11gとOracle 12cです。

  • VC++

    137questions

    VC++ (Visual C++) とは、Microsoft製のC++のための統合開発環境です。