- ベストアンサー
ORACLEでのSQLについて
- ORACLEデータベースでのSQL投げる処理について教えてください。
- ORACLEでも新しいテーブルを作成することができますか?
- データベースのテーブルにSQLで引っ張ってきたデータを入れる方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
VBでoo4oを使った場合なんですね・・。 前掲の例は、SQLのみで一発でテーブルの内容を別テーブルに移送する例です。 そしてSQLの結果を挿入したいテーブルを開いて書き込もうかと考えているのですが...下のように > Set dynOra = dbOra.DbCreateDynaset(SQL, ORADYN_DEFAULT) > dynOra.Addnew > ... > dynOra.update それでもよいと思いますが、1件1件、VBで加工しなければならないほどのデータの加工を行った後に別のワークテーブルなどに移す場合でなければ、非効率になります。 特別な加工がなければ、まず、前掲の "INSERT ~ SELECT"句を Excecute して、一発のSQLでデータを移送した後、そのテーブルのダイナセットを開くことをお勧めします。
その他の回答 (1)
- mfuku
- ベストアンサー率50% (173/345)
全然問題なくできます。 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 宜しくお願いします。
お礼
丁寧な回答ありがとうございます。 insert...valuesの形式しか知らなかったもので... insert...selectの形式でやってみたいと思います。 ありがとうございました