PB 電子会議室
発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) |
---|---|---|
4855 | 99/01/29 15:21:31 | RE(15):AccessからOracleへのデータ移行 By tako |
4851 | 99/01/29 15:03:24 | RE(14):AccessからOracleへのデータ移行 By M.M |
4848 | 99/01/29 14:40:47 | RE(13):AccessからOracleへのデータ移行 By tako |
4844 | 99/01/29 12:28:19 | RE(12):AccessからOracleへのデータ移行 By リエッチ |
4841 | 99/01/29 11:39:05 | RE(11):AccessからOracleへのデータ移行 By tako |
4839 | 99/01/29 11:19:47 | RE(10):AccessからOracleへのデータ移行 By M.M |
4835 | 99/01/29 09:23:31 | RE(9):この操作についての質問です。 By tako |
4218 | 98/12/02 12:16:44 | RE(8):ストアドプログラムの中でDDL文を使うには By てとらぽっと |
4209 | 98/12/01 18:00:34 | RE(7):ストアドプログラムの中でDDL文を使うには By リエッチ |
4200 | 98/12/01 16:08:40 | RE(6):ストアドプログラムの中でDDL文を使うには By Taka |
4183 | 98/12/01 01:05:49 | RE(5):ストアドファンクションをオススメします By リエッチ |
4181 | 98/11/30 16:31:26 | RE(4):ストアドファンクションをオススメします By てとらぽっと |
4180 | 98/11/30 15:23:52 | RE(3):ストアドファンクションをオススメします By まこと |
4174 | 98/11/30 13:09:41 | RE(2):ストアドファンクションをオススメします By てとらぽっと |
4173 | 98/11/30 12:28:30 | RE(1):PB6: 既存テーブルへのデータ移動方法 By リエッチ |
4171 | 98/11/30 11:58:49 | PB6: 既存テーブルへのデータ移動方法 By まこと |
カテゴリ:データベース
日付:1998年12月01日 16:08 発信者:Taka
題名:RE(6):ストアドプログラムの中でDDL文を使うには
みなさんこんにちは。Takaです。横から失礼します。
>/* データをごっそりコピー */
>/* テーブルの定義が同じならカラムの指定は不要 */
>INSERT INTO table2 ( columns ) SELECT columns FROM table1;
>
>/* table1のデータを一瞬で破棄!! ROLLBACKもできません */
>TRUNCATE TABLE table1;
>
>などというストアドオブジェクトを CREATE FUNCTION で作って
>PBのスクリプトから実行するのがいいと思います。
>圧倒的にスピードが違います。(^-^)
てとらぽっとさん、ちょっと待ってください。
ストアードプログラム(ファンクション,プロシジャ,トリガー)の中で、TRUNCATE TABLE文は
実行できないんじゃないですか?
TRUNCATE TABLE は、CREATE ○○ や ALTER ○○ などと同じ DDL文だと思うんですが。
ストアードプログラムで可能なのは、DML文だけじゃありません?
私のところでも、ストアドプロシジャの中で TRUNCATE TABLE文を使用しています。
但し、直接書いている訳でなく、PL/SQLの動的SQLを使うことで対処しています。
例)
DECLARE
cid INTEGER;
BEGIN
cid := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE( cid, \'TRUNCATE TABLE table_name\', DMBS_SQL.Native );
DBMS_SQL.CLOSE_CURSOR( cid );
EXCEPTION
WHEN OHERS THEN
DBMS_SQL.CLOSE_CURSOR( cid );
END;
PL/SQLの中で、CREATE TABLE や DROP TABLE などをやる場合、上記のように
処理しています。
>でも・・TRUNCATE文って、ストアドファンクション上で実行できたんですね。
>ストアドプロシジャーを使って、プログラムを作成していますが、
>ストアドプロシジャー上ではTRUNCATE文が実行できなかったと、先輩から報告を受けたので
>鵜呑みにして、泣く泣くDelete文を流しが記憶が・・
...という訳でリエッチさん、上記方法で解決すると思うんですが。
ちなにみ、ファンクションとプロシージャで、この辺の機能での違いはありません。
(戻り値を持てるか持てないかの違いだけだと思います)
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows NT 4.0
DBMS Oracle SQL*Net 2.3
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS Oracle 7.3
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.