お疲れ様です。
質問をお願い致します。
OS:WindowsXP
DB:Oracle10g
PL/SQLで、DBより対象データを取得し、MDBファイルの作成、書込み行いたいのですが、可能なのでしょうか。
ネットで調べたところ、MDBファイルに書き込みは可能と分かったのですが、
ファイルの作成の情報が無かったので、質問させて頂きました。
参考になるサイトなどがあれば教えて頂けますでしょうか?
また、こちらでも重複して質問させて頂いております。
http://forums.oracle.com/forums/thread.jspa?thre …
どうぞ、宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
可能かどうか、で言えば可能だと思います。
MDBファイルに書き込む方法については、おそらく質問者様が既にお調べになったのは Oracle Generic Connectivity(ODBC、OLE DBでの異機種接続)を使用する方法だと思います。
この場合、構文は ORACLE の構文になりますが、実行できるのは SELECT/INSERT/DELETE/UPDATE だけです(だったと思います)。
DDLすら実行できないので、当然データベースを作る(新規MDB作成)などは Generic Connectivity ではできません。
PL/SQLで(と言うかストアドで)MDBを作成する方法としては、
(1)Javaストアド
(2)COM Automation呼び出し
(3)外部プロシージャ呼び出し
などが考えられます。
(1)はJava+JDBCでソースを書く必要があります。
(3)はC/C++でソースを書く必要があります。
VB、VBA、VBSなどで CreateObjectを使った事があるなら、(2)のCOM Automation呼び出し(ORDCOMパッケージを使用)が一番やりやすいと思いますね、個人的には。
と、ここまで読んで何となく、おわかりかと思いますが、かなーり大変です。
異機種接続やCOM呼び出しでハマッた私が言うのですから、間違いありません。
単体テストレベルまで行き着くのもそれなりに大変ですが、仮にできたとしても、運用フェーズで、おそらくゲッソリするようなトラブルに見舞われる可能性が高いです。
しかもサポート(に入っていたとして)に聞いても、余り正確な解答が得られない事も考えられます。
ODBC、OLE DBでの異機種接続やCOM呼び出しなんて、実のところ、ORACLEにしてみたら「そんなのスコープ外です!」と言いたいところでしょう。
と、言う事でお薦めのソリューションは、PL/SQLからMDBを作成したり、更新したりはしない、別のアプローチを考える、と言う事です。
そもそも、ORACLEからMDBに書くのではなく、ODBC、OLE DBアプリケーションからORACLE向きとMDB向きの2コネクションを用意して書き込むスタイルなら(つまり逆向きにすれば)何ぼでもサンプルがありますよね。
どうしても、「ORACLEから」にするなら、最悪でも Generic Connectivity までにしておくべきでしょう。
PL/SQLを考えている、と言う事は、その無名PL/SQLなりストアドなりを実行するアプリケーションがあるわけですよね?
例えば、それがWindowsのバッチであれば、MDBの雛形をコピーするようなバッチなどを用意しておき、PL/SQLの前に実行すればいいわけです。
お疲れ様です。
ご回答ありがとう御座います!
utakataXEXさんの仰る通り、PL/SQLでのMDB作成は難しいようなので、他の方法を考えたいと思います。
とても詳しい説明で、勉強になりました。
>そもそも、ORACLEからMDBに書くのではなく、
>ODBC、OLE DBアプリケーションからORACLE向きとMDB向きのコネクションを用意して
>書き込むスタイルなら(つまり逆向きにすれば)何ぼでもサンプルがありますよね。
→上記のご回答の通り、逆向きのサンプルはいっぱいあるんですよね~。
お忙しいところ、ありがとう御座いました~~
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Excel(エクセル) Excelでデータを抽出するに良い方法 9 2023/02/06 12:42
- 画像編集・動画編集・音楽編集 inkscapeで作成した図の保存の仕方とその保存したファイルの編集の仕方 1 2022/09/22 09:33
- Excel(エクセル) Excel同士のデータの突合 3 2023/08/07 16:34
- MySQL MySQL,JavaScript,PHPコードの結果を表示する方法を教えてください。 1 2023/02/13 17:49
- SQL Server これをSQL文で出来るでしょうか? 1 2023/03/26 02:16
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQL実行結果の出力を見やすくし...
-
SQL*Plusで、コマンドの返答を...
-
batファイルでのSQL(oracle)...
-
【spoolコマンドで追記】
-
PL/SQLでログを確認したい。
-
PL/SQLからshellスクリプ...
-
ストアド・プロシージャをバッ...
-
SQL*Plusで以前に実行したコマ...
-
トレースファイルの削除スクリプト
-
Oracleで流したSQLのログを取得...
-
JavaでのOracle接続について(J...
-
startup、shutdownコマンド実行...
-
SQL*PLUSを終了させる方法
-
ORACLEの停止失敗
-
ShellからTruncate【Linux】
-
リスナーログを出力しない設定方法
-
RMANのバッチ実行に関して
-
ORA-01013のエラーについて経験...
-
CASE文のエラーについて
-
ストアドファンクションの実行
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PL/SQLでログを確認したい。
-
SQL*Plusで、コマンドの返答を...
-
SQL実行結果の出力を見やすくし...
-
トレースファイルの削除スクリプト
-
batファイルでのSQL(oracle)...
-
Oracleで流したSQLのログを取得...
-
ストアド・プロシージャをバッ...
-
サービスの再起動を自動で
-
JavaでのOracle接続について(J...
-
Accessからoracleのストアドプ...
-
SQL*PLUSを終了させる方法
-
リスナーログを出力しない設定方法
-
execute使用した時の、完了メッ...
-
ORA-00984のエラーが出ます
-
ソート(大文字・小文字を区別...
-
PL/SQLからshellスクリプ...
-
oracle11g listener.logの削除
-
ShellからTruncate【Linux】
-
シェルの実行ができません
-
【spoolコマンドで追記】
おすすめ情報