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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Oracle Database 11g

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

Q&A

解決済

3回答

3381閲覧

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

k47

総合スコア12

Oracle Database 11g

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

0グッド

1クリップ

投稿2016/04/15 11:18

編集2016/04/18 10:21

###前提・実現したいこと
現在、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)";

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takasima20

2016/04/15 13:08

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

2016/04/16 04:59 編集

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

回答3

0

自己解決

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

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

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

投稿2016/05/11 12:07

k47

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

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

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

投稿2016/04/19 01:23

Tommy.103

総合スコア94

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k47

2016/04/19 04:01

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

0

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

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

投稿2016/04/18 10:34

takasima20

総合スコア7458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k47

2016/04/18 10:36

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

2016/04/18 11:07

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

2016/04/19 03:59

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問