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

PL / SQLで静的ddlが許可されないのはなぜですか?

    答えは、PL/SQLは動的ポリモーフィズムをサポートしていないということです。

    のため、静的ポリモーフィズムのみをサポートします。

    すべてのPL/SQLは、ツリー構造の中間言語であるAdaの「DIANA」->記述的中間属性表記を生成します。 DIANAは、コンパイラによって内部的に使用されます。

    コンパイル時に、PL / SQLソースコードがシステムコードに変換され、対応するDIANAが生成されます。ここで、コンパイル時に存在しないcreate tableステートメントのようなDDLステートメントがあった場合、プログラムの実行後に作成されると考えてください。 PL /SQLエンジンはどのようにDIANAを生成しますか????

    DIANAは、PL / SQLで重要な役割を果たし、サブプログラムをチェック/検証します。これが必要なのは、サブプログラムがテーブル、ビュー、シノニム、またはその他のストアドプロシージャなどのデータベースオブジェクトを使用できることがわかっているためです。次回プログラムを実行するときに、オブジェクトが変更/削除/削除された可能性があります。例:誰かがテーブルを削除した可能性があり、ストアドプロシージャまたは関数のsingnatureが変更された可能性があります。

    そのため、一般的にPL / SQLはデータベース構造内のデータを操作するために使用されますが、それらの構造を操作するためには使用されません。

    ただし、動的SQLおよびDBMS_SQLパッケージを使用して操作する方法はありますが、これらの方法論も慎重に使用する必要があります。たとえば、テーブルを作成する場合は、最初に、このテーブルがすでに存在するかどうか、またはデータディクショナリビューを使用していないかどうかを確認する必要があります。



    1. MySQL:同じMySqlインスタンスでMySQLデータベースのクローンを作成する

    2. SQLiteにGLOB句が必要なのはなぜですか?

    3. SQL ServerでRANK()を使用する方法

    4. クエリ内の式がいつ評価されるかを評価する