Oracle:DBMS_UTILITY.EXEC_DDL_STATEMENT与立即执行
技术问答
371 人阅读
|
0 人回复
|
2023-09-14
|
DBMS_UTILITY.EXEC_DDL_STATEMENT和之间有EXECUTE IMMEDIATE 有什么区别?) i3 V+ T' m7 P3 P% |' S
: l; B& S5 D7 u: F" C4 B! U Q' M/ W+ V' W
解决方案:
2 l5 }' O- @# U3 w4 T+ I 从根本上说,它们执行相同的操作,这是提供一种PL / SQL中执行DDL这台机器不支持语句的机制。如果内存对我有用,那就是Oracle
7 Q5 {4 v( i5 m t: X8 w7版本的DBMS_UTILITY可用于软件包EXEC_DDL_STATEMENT,8中只引入本机动态SQL(EXECUTE IMMEDIATE)。% l9 Q: f1 ^$ E# {
有些区别。EXECUTEIMMEDIATE主要是关于执行动态SQL(如其NDS别名显示)。我们可以用它。DDL的事实是逐步的。而EXEC_DDL_STATEMENT()-就像建议一样-只能执行DDL。
" ^& I/ v. i. B% M* k但不仅仅是保留DBMS_UTILITY版本是向后兼容的。它还有一个整洁的技能,我们不能使用它EXECUTE IMMEDIATE来完成-
9 T4 M$ B$ \8 r! Q" F( D分布式运行DDL。我们可以从数据库上创建一个表,我们可以从本地数据库中运行此语句(假设我们的用户在那里有必要的特权):
* _4 l3 h3 Q% D. }( h5 P) h9 i9 ?SQL> exec DBMS_UTILITY.EXEC_DDL_STATEMENT@remote_db('create table t1 (id number)');我不建议这样做,只是说可以。 |
|
|
|
|
|