sql >> データベース >  >> RDS >> Oracle

Oracleデータベースで即時実行するALTER&DROPテーブルDDL

    ALTER&DROP Table DDL

    これまで、NativeDynamicSQLを使用してPL/SQLブロック内にテーブルを作成するためのすべての可能な方法を学習しました。チュートリアル82とチュートリアル83の最後の2つのチュートリアルで確認できます。

    PL/SQLブロックでDDLおよびDMLステートメントを実行する機能を提供してくれたDynamicSQLに感謝します。さて、石器時代の人々を落ち着かせましょう! DBMS_SQLパッケージがまだ存在していることは知っていますが、動的SQLと比較すると、パフォーマンスの低下は言うまでもなく、非常に複雑です。とにかく、そう

    このチュートリアルから何を学んでいますか?

    このチュートリアルでは、ネイティブ動的SQLの即時実行ステートメントでALTER&DROPテーブルDDLを使用する方法を学習します。これは、このチュートリアルの終わりまでに、PL/SQLプログラムを介してテーブルなどのデータベースオブジェクトを動的に変更および削除できるようになることを意味します。

    なぜそれを学ぶ必要があるのですか?

    このトピックは無関係だと感じる人もいるかもしれませんが、特にOracle認定と面接の観点からは、それほど重要なトピックではありません。また、開発者であるためには、いつ必要になるかわからないため、基本を明確にする必要があります。

    それでは、チュートリアルを始めましょう。まだ質問がある場合は、こちらのFacebookで気軽にメッセージを送ってください。まず、動的SQLの即時実行でALTERTABLEを使用してテーブルを変更する方法を学びましょう。

    テーブルを動的に変更するにはどうすればよいですか?

    テーブルなどのデータベースオブジェクトを変更するには、OracleDatabaseでALTERDDLを使用します。 PL / SQLと比較して、SQLを介したALTERDDLを使用した表の変更は簡単です。

    PL / SQLは、DDL、DML、およびDQL文を直接サポートしていません。上記のSQLステートメントを実行するには、動的SQLまたはDBMS_SQLパッケージを使用する必要があります。これら2つの中で、ネイティブ動的SQL(NDS)は、その単純さと最適化されたパフォーマンスのために最も実行可能なオプションです。ここで、DBMS_SQLパッケージに対するNDSの利点を読むことができます。

    したがって、テーブルのようなデータベースオブジェクトを動的に変更する最も簡単な方法は、NativeDynamicSQLのExecuteImmediateステートメントでAlterTableDDLを使用することです。

    例:ExecuteImmediateステートメントを使用してテーブルDDLを変更します。

    デモンストレーションでは、前回のチュートリアルで作成したものと同じテーブルを使用します。そこで、NUMBERデータ型のtut_numとvarchar2データ型のtut_nameの2つの列を持つtut_83という名前のテーブルを作成しました。

    私と一緒に練習している場合は、スキーマにそのテーブルを作成する必要があります。もしそうなら、あなたはすべて行く準備ができています、さもなければ最後のチュートリアルにアクセスしてそのテーブルを作成してください。

    ここで、日付データ型の別の列tut_dateをこのテーブルに追加し、それもネイティブ動的SQLを使用するとします。これを行うには、ExecuteImmediateステートメントでALTERTABLEDDLを使用する必要があります。

    ステップ1:DDLステートメントを準備します。

    動的SQLプログラムを作成するためのベストプラクティスは、SQLステートメントを事前に準備することです。

    ALTER TABLE tut_83 ADD tut_date DATE

    これは、動的実行に使用するALTERTABLEDDLです。このステートメントは、DATEデータ型の列tut_dateをテーブルtut_83に追加します。

    コンセプトのライブデモンストレーション用のビデオチュートリアルもご覧いただけます。

    ステップ2:ネイティブ動的SQLプログラムを作成します。

    DDLステートメントの準備ができたら、PL/SQLブロックを作成する準備が整います。

    SET SERVEROUTPUT ON;
    DECLARE
     ddl_qry VARCHAR2(50);
    BEGIN
     ddl_qry := 'ALTER TABLE tut_83
            	 ADD  tut_date DATE';
     EXECUTE IMMEDIATE ddl_qry;
    END;
    /  
    

    正常に実行されると、このPL/SQLプログラムは上記の表を変更します。次のようにDESCRIBEコマンドを使用して、テーブルの変更された構造を確認できます

    DESCRIBE tut_83;

    または

    DESC tut_83;

    それがあなたがしなければならないすべてです。これが、ExecuteImmediateステートメントでALTERTABLEDDLを使用してデータベースオブジェクトを動的に変更する方法です。これでチュートリアルの最初の部分は終わりです。次に、2番目の部分に進み、ネイティブ動的SQLを使用してテーブルを削除する方法を学びましょう。

    テーブルを動的に削除するにはどうすればよいですか?

    テーブルのようなデータベースオブジェクトを削除するには、OracleDatabaseでDROPDDLを使用します。他のDDLステートメントと同様に、これもPL/SQLエンジンによって直接サポートされていません。また、いつものように、このDDLを実行するには動的SQLを使用する必要があります。ネイティブ動的SQLの即時実行を使用してテーブルを削除する方法を見てみましょう。

    ステップ1:DDLステートメントを準備します。

    テーブルを削除するためのDDLは次のとおりです。

    DROP TABLE tut_83

    このDDLは、テーブルtut_83をスキーマから削除します。

    ステップ2:即時実行を使用してDROP表のPL/SQLプログラムを作成します。

    SET SERVEROUTPUT ON;
    DECLARE
        ddl_qry     VARCHAR2 (100);
    BEGIN
        ddl_qry := 'DROP TABLE tut_83';
        EXECUTE IMMEDIATE ddl_qry;
    END;
    /
    

    したがって、このプログラムを正常に実行すると、テーブルtut_83が削除されます。このテーブルは、上記のDESCRIBEコマンドを使用して簡単に確認できます。

    これは、OracleDatabaseのNativeDynamicSQLのExecuteImmediateステートメントでAlter&DropテーブルDDLを使用してデータベースオブジェクトを変更および削除する方法に関するチュートリアルです。あなたがそれを読んで楽しんで、何か新しいことを学んだことを願っています。このブログをソーシャルメディアで友達と共有してください。さらに興味深い洞察を得るために、私のFacebookページで私とつながることもできます。ありがとう&素晴らしい一日を!


    1. Google BigQueryで数千のカテゴリのダミー変数列を作成するにはどうすればよいですか?

    2. エラー:ファイルXX.csvを統計できませんでした:不明なエラー

    3. SQLServerの再構築インデックスクエリ

    4. クエリ内の連結JSON(B)列のマージ