アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

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

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

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

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

Oracle8.1.6 vb6

A 回答 (2件)

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



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

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

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

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

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

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

お礼日時:2002/04/18 13:01

全然問題なくできます。



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

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

この回答への補足

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

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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!