2011-08-07 9 views
20

DBMS_UTILITY.EXEC_DDL_STATEMENTEXECUTE IMMEDIATEの違いは次のとおりですか?Oracle:DBMS_UTILITY.EXEC_DDL_STATEMENT対EXECUTE IMMEDIATE

+11

誰かが「オフトピック」としてこれを閉じるように投票した理由がわかりません。プログラミング言語についての質問ですが、その話題は何ですか? – APC

答えて

28

基本的に同じことを行います。これは、PL/SQLでDDL文を実行するメカニズムを提供することです。これはネイティブではサポートされていません。メモリがうまく機能していれば、EXEC_DDL_STATEMENTはOracle 7バージョンのDBMS_UTILITYパッケージで使用可能でしたが、Native Dynamic SQL(EXECUTE IMMEDIATE)は8に導入されました。

2つの違いがあります。 EXECUTE IMMEDIATEは、主に動的SQLの実行に関するものです(NDS名が示すとおり)。私たちがDDLのために使用できるという事実はby-by-byです。

DBMS_UTILITYバージョンは下位互換性のために残されていませんが、EXECUTE IMMEDIATEで実行できない1つの方法があります。分散型でDDLを実行します。私たちは(私達のユーザーが必要な権限を持って提供する)リモート・データベースのテーブルを作成するために私たちのローカルデータベースからこの文を実行することができます:私はこれを推薦していないよ

SQL> exec [email protected]_db('create table t1 (id number)'); 

、ちょうどそれを行うことができると言います。

関連する問題