こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ORACLEでのSQLについて

SQLについて教えてください。

今、VBからORACLEデータベースにSQLを投げる処理を作っているのですが、
一つわからないことがあります。

例えば、アクセスでは、クエリで新しいテーブルを作成するという考え方がありますが
データベースがORACLEでも同じようなことができるのでしょうか?

別に新しいテーブルを作成することに執着するわけではなく、テーブルのデータを削除
してから、そのテーブルにSQLにて引っ張ってきたデータを入れる という

ものでもいいと考えています。そのやり方でもかまいませんので教えてください。
宜しくお願いします。

Oracle8.1.6 vb6

投稿日時 - 2002-04-18 10:49:53

QNo.254916

すぐに回答ほしいです

質問者が選んだベストアンサー

VBでoo4oを使った場合なんですね・・。

前掲の例は、SQLのみで一発でテーブルの内容を別テーブルに移送する例です。

そしてSQLの結果を挿入したいテーブルを開いて書き込もうかと考えているのですが...下のように

> Set dynOra = dbOra.DbCreateDynaset(SQL, ORADYN_DEFAULT)
> dynOra.Addnew
> ...
> dynOra.update

それでもよいと思いますが、1件1件、VBで加工しなければならないほどのデータの加工を行った後に別のワークテーブルなどに移す場合でなければ、非効率になります。

特別な加工がなければ、まず、前掲の "INSERT ~ SELECT"句を Excecute して、一発のSQLでデータを移送した後、そのテーブルのダイナセットを開くことをお勧めします。

投稿日時 - 2002-04-18 12:49:59

お礼

丁寧な回答ありがとうございます。
insert...valuesの形式しか知らなかったもので...
insert...selectの形式でやってみたいと思います。
ありがとうございました

投稿日時 - 2002-04-18 13:01:16

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

全然問題なくできます。

ACCESSでいうテーブル作成クエリーは
CREATE TABLE ~ AS SELECT ~;
でできます。

また、いったんデータを削除したあと、データを挿入する場合は
全件削除する場合、
TRUNCATE ~;
一部の場合
DELETE FROM ~ WHERE ~;
したあと、
INSERT INTO ~ SELECT ~;
となります。

投稿日時 - 2002-04-18 11:22:53

補足

やり方はテーブルのデータを削除してから、そこにデータを挿入することにしました。

SQLにて抽出したデータを"INSERT"することはわかるのですが、抽出したデータを
ダイナセット等に保持するにはどうすればいいのですか?

Set ssOra = CreateObject("OracleInProcServer.XOraSession")
Set dbOra = ssOra.OpenDatabase(DB, PASS, ORADYN_DEFAULT)
Set sqlOra = dbOra.CreateSql(gSamarySQL, ORADYN_DEFAULT)

として sqlOra.Refresh で現在実行しています。

そしてSQLの結果を挿入したいテーブルを開いて書き込もうかと考えているのですが...下のように

Set dynOra = dbOra.DbCreateDynaset(SQL, ORADYN_DEFAULT)

dynOra.Addnew
...
dynOra.update


宜しくお願いします。

投稿日時 - 2002-04-18 11:50:23

あなたにオススメの質問