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 (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.