2017-09-27 1 views
0

:私はテーブル名を取得することができます
oracleに条件付きテーブルをドロップする方法は?ちょうどこのよう

drop table xxxx where table_name like 'v_%'; 

は、データベースを形成するが、私は単純な方法でそれを行う方法を知りません。 テーブル:テーブルまたはその他のオブジェクト(索引、パッケージ)を削除するスクリプトを生成するための

set serveroutput on; 

begin 
    for table_record in (select table_name from user_tables where table_name like 'v_%') 
    loop 
     execute immediate 'DROP TABLE ' || table_record.table_name ; 
     dbms_output.put_line('Table ' || table_record.table_name || ' dropped'); 
    end loop; 
end; 
/

答えて

0

あなたはこのようにそれを行うことができます。 この例は、オブジェクトを削除する前にリストを削除して表示できるので、より安全です。

select 'drop '|| object_type||' '||owner||'.'||object_name||' cascade constraints ;' 
    from all_objects 
    where owner='ASUZM' 
    and object_type in ('TABLE') 
    and object_name like 'V%' 
    order by object_type; 
+0

あなたのR i'vが試したよりも良いです。 DECLARE CURSORタブはTABLE_NAME 'V_の%' のようなUSER_TABLESからテーブル名を選択 あります。 は が がIMMEDIATE 'DROP TABLEを' EXECUTE BEGINタブループでタブFOR をBEGIN || tab.table_name; END; END LOOP; END; –

0

例のSQLコード:PL/SQLコードを使用して

select table_name from user_tables wher table_name like 'v_%'; 
+0

コードのみのコメントや説明の回答は、一般的に「低品質」とみなされ、削除の対象となります。 – Graham

+0

"スクリプトは何度も実行する必要があります"。あるいは私は、私の答え[重複した質問で](https://stackoverflow.com/a/7568520/146325)のように 'カスケード制約 'を使うことができます。 – APC

関連する問題