2

テーブルを削除するには SQL ステートメントを使用する必要があります。テーブルが存在しない場合はクラッシュします。IFステートメントを 使用してテーブルを削除することは可能ですかs.executeUpdate("DROP TABLE employee");

4

5 に答える 5

11

Oracle は のような構文をサポートしていませんdrop table if exists my_table。これは明らかに MySQL (および他の RDBMS) で有効な構文です。

および/またはさまざまなオブジェクトに対して.SQL実行DDLしているスクリプトでは、Oracleの標準では、オブジェクトを削除し、オブジェクトが存在しない場合はエラーを無視します。必要に応じて、オブジェクトが存在するかどうかをチェックするコードを記述して (ビューを参照)、存在する場合にのみドロップすることができます。DROPCREATEDBA_OBJECTS

から、s.executeUpdateJava でこれを行っていると思いますか? それが私だったら、ドロップして、存在しないエラーを無視します。

それが役立つことを願っています。

于 2014-04-05T03:23:57.053 に答える
2

適切な権限があると仮定すると、以下のようなことができます

declare var_count int;
select count(*) INTO var_count
from all_tables where OWNER = [schema] and table_name = "EMPLOYEE";
if var_count > 0 then
begin
drop table employee;
end  

pl/sql プロシージャではなくフロントエンド コードでこれを行う場合は、それに応じて調整してください。

于 2014-04-05T01:52:30.120 に答える
0

従来の pl/sql では、ブロック内に例外セクションを指定し、削除するテーブルがない場合は例外をキャッチできます。

Oracle のエラー処理を参照してください

于 2014-04-05T02:21:37.150 に答える
0

これにより、問題が解決されます。テーブルが存在しない場合、エラーはスローされません。

BEGIN DROP TABLE 従業員; その他が NULL の場合は例外。終わり;

于 2014-04-06T11:36:51.323 に答える