…
dbms_utility.exec_ddl_statement(q'[
create table tab_xyz (
id integer primary key,
val number(5,2)
)
]');
…
The following statement is not a DDL statement, hence, no value is inserted:
begin
dbms_utility.exec_ddl_statement('insert into tab_a (id) values (42)');
end;
/
Database links
Unlike execute immediate, dbms_utility.exec_ddl_statement allows to execute a DDL statement in a remote database using a database link.
begin
dbms_utility.exec_ddl_statement@remote_db('create table t1 (id number)');
end;
/
Under the hood
Under the hood, exec_ddl_statement simply executes something like the following snippet. Because dbms_sql.execute is not called, DML (and select) statements are not executed.