PL SQLでDDLを使用できますか?

質問者:コロタビア|最終更新日:2020年1月15日
カテゴリ:テクノロジーおよびコンピューティングデータベース
4.5 / 5 (628ビュー。9票)
PL / SQLはSELECT、DML(INSERT、UPDATE、DELETE)およびTC(COMMIT、ROLLBACK、SAVEPOINT)ステートメントのみを使用できDDL (CREATE、ALTER、DROP)およびDCL(GRANT、REVOKE)は直接使用できません。ただし、EXECUTE IMMEDIATE文に埋め込まれている場合は、 PL / SQLから任意のDDL / DCLを実行できます。

それで、プロシージャでDDLを使用できますか?

プロシージャ(PLSQL BLOCK)ではDDLステートメントは使用できません。PL/ SQLオブジェクトはプリコンパイルされています。一方、CREATE、DROP、ALTERコマンドなどのDDL (データ定義言語)ステートメントおよびGRANT、REVOKEなどのDCL(データ制御言語)ステートメントは、プログラムの実行中に依存関係変更できます。

また、DDLコマンドとは何ですか?データ定義またはデータ記述言語( DDL )は、データ構造、特にデータベーススキーマを定義するためのコンピュータープログラミング言語に似た構文です。 DDLステートメントは、テーブル、インデックス、ユーザーなどのデータベースオブジェクトを作成および変更します。一般的なDDLステートメントは、CREATE、ALTER、およびDROPです。

また、Oracleの関数でDDLを使用できますか?

DDLは許可されていません: DDLは暗黙的なコミットを発行するため、SQLステートメント内から呼び出される関数DDLに対して制限されています。 PL / SQL関数内からDDL文を発行することはできません。制約に対する制限:create tableDDLステートメントのcheck制約で関数使用することはできません。

PL SQLブロックにテーブルを作成できますか?

DDLコマンドは、 PL / SQLブロックのPL / SQL構成として使用できません。 DBMS_SQLまたはEXECUTEIMMEDIATEを使用して、テーブルの作成、削除、変更、分析、切り捨て、およびその他のDDL実行することもできますPL / SQLプロシージャが正常に完了しました。

25の関連する質問の回答が見つかりました

Oracleで即時実行とは何ですか?

EXECUTEIMMEDIATEステートメント。 EXECUTE IMMEDIATE文は、動的SQL文または匿名PL / SQLブロックを実行します。これを使用して、 PL / SQLで直接表現できないSQL文を発行したり、すべての表名やWHERE句などを事前に知らない文を作成したりすることができます。

ストアドプロシージャSQLServerでDDLステートメントを使用できますか?

あなたは、ストアドプロシージャにのみDDL COMMENTステートメントを使用することができます。組み込みSQLアプリケーションに制限されているDMLCOMMENTステートメントを指定して、データベース・オブジェクト、表の列、およびパラメーターのコメントをフェッチすることはできません。 CREATETABLEステートメントのすべてのバリエーションが有効です。

OracleでDDLスクリプトを実行するにはどうすればよいですか?

Oracleデータベースで即時実行を使用してCREATETABLE DDLを実行するにはどうすればよいですか?
  1. ステップ1:事前にDDLを準備します。
  2. ステップ2:ExecuteImmediateを使用してPL / SQLプログラムを介してDDLを実行します。
  3. 最初に:SQLステートメントを常に一重引用符のペアで囲みます。
  4. 2番目:セミコロンの世話をします。

プロシージャでDMLステートメントを使用できますか?

PL / SQLブロック内にSQLデータ操作言語( DMLステートメント直接入力できます。また、Oracleが提供するプロシージャを使用して、データ定義言語(DDL)ステートメントを実行できます。

ストアドプロシージャ内にテーブルを作成できますか?

ストアドプロシージャは、テーブルやビューを作成することができますテーブルは、一時的なメモリテーブルにすることできますCREATE TABLEを参照)。ただし、同じストアドプロシージャ内でそのテーブルまたはビューを参照することはできません。 CREATE PROCEDURE / ALTER PROCEDUREステートメントは、すべてのSQLSELECTおよびDMLステートメントをコンパイルします。

selectクエリでDMLステートメントを含む関数を呼び出すことはできますか?

関数内にDMLステートメントを単純に配置することできません。また、 DMLステートメントを含む関数SELECTクエリ内で使用することもできません。

Oracle関数はDMLステートメントを持つことができますか?

Oracle PL / SQL関数内でDML操作実行できます。これは一般的には適切な方法ではありませんが、SQLから呼び出すことができます。 SQLから呼び出されるこの種の関数は、クエリのパフォーマンスを大幅に低下させる可能があることに注意してください。監査目的でのみ使用することをお勧めします。

Oracleの関数内でコミットできますか?

はい、関数を自律型トランザクションにすれば、それを行うことができます。そうすれば、それ現在のトランザクションの一部でなくなります。 。 DDLステートメントは現在のトランザクションを暗黙的にコミットするため、ユーザー定義関数はDDLステートメントを実行できません。

OracleのPragma自律トランザクションとは何ですか?

AUTONOMOUS_TRANSACTIONプラグマは、トランザクション内でのサブプログラムの動作方法を変更します。このプラグマでマークされたサブプログラムは、メイントランザクションのデータをコミットまたはロールバックすることなく、SQL操作を実行し、それらの操作をコミットまたはロールバックできます。プラグマは、実行時ではなく、コンパイル時に処理されます。

Oracleの関数に挿入ステートメントを記述できますか?

挿入ステートメントを含む関数は、DMLステートメントから呼び出すことできます。 :関数呼び出し«ストアドプロシージャ関数« Oracle PL / SQL挿入ステートメントを含む関数は、DMLステートメントから呼び出すことできます。

Oracleの関数でupdateステートメントを使用できますか?

保存された関数はデータベーステーブルを変更しない場合があります。 INSERT、DELETE、またはUPDATEステートメントは実行できません。リモートで、または並列化されたアクションを介して呼び出される保存された関数は、パッケージ変数の値を読み書きできない場合があります。 Oracle Serverは、ユーザー・セッションにまたがる副作用をサポートしていません。

すべてのDDLコマンドとは何ですか?

データ定義言語(DDL)ステートメント
スキーマオブジェクトを作成、変更、および削除します。特権と役割を付与および取り消します。テーブル、インデックス、またはクラスターに関する情報を分析します。監査オプションを確立します。

テーブルのDDLとは何ですか?

DDL 。 「データ定義言語」の略です。 DDLは、データ構造を定義し、データを変更するために使用される言語です。たとえば、 DDLコマンドを使用して、データベース内のテーブルを追加、削除、または変更できます。 DDLはSQLのサブセットであるため、可能なすべてのSQLコマンドが含まれているわけではありません。

SQLのデータ型とは何ですか?

SQLデータ型は、任意のオブジェクトのデータを指定する属性です。各列、変数、および式には、 SQLで関連するデータ型があります。テーブルの作成中にこれらのデータ型を使用できます。要件に基づいて、テーブル列のデータ型を選択できます。

データベースの外部キーとは何ですか?

外部キーは、2つのテーブルのデータ間のリンクを提供するリレーショナルデータベーステーブルの列または列のグループです。参照整合性の概念は、外部キー理論から派生しています外部キーとその実装は、主キーよりも複雑です。

DDLまたはDMLを切り捨てますか?

truncateは、コミットしてロールバックできないという意味で「トランザクション」ではなく、オブジェクトストレージ属性を変更できます。したがって、これは通常のDMLではありません。OracleはそれをDDLとして分類します。 deleteは通常のDMLステートメントです。