Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle:DBMS_UTILITY.EXEC_DDL_语句vs EXECUTE IMMEDIATE_Sql_Oracle_Ddl - Fatal编程技术网

Sql Oracle:DBMS_UTILITY.EXEC_DDL_语句vs EXECUTE IMMEDIATE

Sql Oracle:DBMS_UTILITY.EXEC_DDL_语句vs EXECUTE IMMEDIATE,sql,oracle,ddl,Sql,Oracle,Ddl,DBMS\u实用程序.EXEC\u DDL\u语句和executeimmediate之间的区别是什么?基本上它们做的是相同的事情,即提供一种机制来执行PL/SQL中的DDL语句,而PL/SQL本身不支持这种机制。如果内存很好的话,EXEC_DDL_语句可以在Oracle7版本的DBMS_实用程序包中使用,而原生动态SQL(executeimmediate)只在Oracle7版本的DBMS_实用程序包中引入 有几个不同之处。executeimmediate主要是关于执行动态SQL(如其NDS别名所

DBMS\u实用程序.EXEC\u DDL\u语句
executeimmediate
之间的区别是什么?

基本上它们做的是相同的事情,即提供一种机制来执行PL/SQL中的DDL语句,而PL/SQL本身不支持这种机制。如果内存很好的话,EXEC_DDL_语句可以在Oracle7版本的DBMS_实用程序包中使用,而原生动态SQL(executeimmediate)只在Oracle7版本的DBMS_实用程序包中引入

有几个不同之处。executeimmediate主要是关于执行动态SQL(如其NDS别名所示)。事实上,我们可以将其用于DDL是由。而EXEC_DDL_语句()——正如建议的那样——只能执行DDL

但是DBMS_实用程序版本并不仅仅是为了向后兼容而保留的,它还有一个我们无法用分布式方式执行即时运行DDL的巧妙技巧。我们可以从本地数据库运行此语句,以便在远程数据库上创建表(前提是我们的用户在远程数据库上具有必要的权限):


我不是推荐这个,只是说它可以做到。

我意识到我的回复晚了9年,但还有一个区别

dbms_utility.exec_ddl_语句只执行ddl。如果你试着做一个插入,它不会做。它也不会返回错误,因此您不会知道您没有插入

-- drop table kevtemp1;

create table kevtemp1 (a integer);

insert into kevtemp1 values (1);
commit;

begin
    insert into kevtemp1 values (2);
end;
/
commit;

begin
   DBMS_UTILITY.EXEC_DDL_STATEMENT('insert into kevtemp1 values (3)');
end;
/
commit;


select * from kevtemp1;

不知道为什么有人投票以“离题”来结束这场辩论。这是一个关于编程语言的问题,有什么离题的?
-- drop table kevtemp1;

create table kevtemp1 (a integer);

insert into kevtemp1 values (1);
commit;

begin
    insert into kevtemp1 values (2);
end;
/
commit;

begin
   DBMS_UTILITY.EXEC_DDL_STATEMENT('insert into kevtemp1 values (3)');
end;
/
commit;


select * from kevtemp1;