テーブルが現在データベースに存在しない場合にのみテーブルを作成するために使用する正しい構文を誰かに教えてもらえますか?
現在、Oracleに接続してデータベースでステートメントを実行するためにJava GUIをプログラミングしていますが、これをJava制約として実装するのかSQLPlus制約として実装するのか疑問に思っています。
通常、オブジェクトは実行時に作成されるべきではなく、アプリケーションはインストール時に作成されたオブジェクトを認識している必要があるため、テーブルが存在するかどうかを確認することはあまり意味がありません。これがインストールの一部である場合は、プロセスの任意の時点でどのオブジェクトが存在するかを知っておく必要があるため、テーブルがすでに存在するかどうかを確認する必要はありません。
ただし、本当に必要な場合は、
USER_TABLES
(またはALL_TABLES
、DBA_TABLES
他のユーザーが所有するオブジェクトとデータベース内の特権を作成しているかどうかに応じて)、テーブルがすでに存在するかどうかを確認できます。次の手順でこれを行うことができます-
BEGIN
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE <<Your Table Name>>';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE != -942 THEN
RAISE;
END IF;
END;
EXECUTE IMMEDIATE '<<Your table creation Statement>>';
END;
これがお役に立てば幸いです。
@Archieあなたの質問に答えたいと思います。@Piyas Deコードを盗んですみません:)。
@Piyas Deの回答を少し更新します。
BEGIN
BEGIN
EXECUTE IMMEDIATE '<<Your table creation Statement>>';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE == -955 THEN
RAISE;
END IF;
END;
END;
try
{
// insert query for insert new record in your table
}
catch(Exception Ex)
{
//if it throw exception then catch it
int s=Ex.getErrorCode(); // check it for 903 error
//903 is table not existing error in oracle11g
// then create your new table here otherwise if table present then record get stored in database
}