回答

收藏

Oracle:DBMS_UTILITY.EXEC_DDL_STATEMENT与立即执行

技术问答 技术问答 310 人阅读 | 0 人回复 | 2023-09-14

DBMS_UTILITY.EXEC_DDL_STATEMENT和之间有EXECUTE IMMEDIATE 有什么区别?
( D3 k5 {: W" H4 X8 z) k8 s                                                               
6 M" S& d  d/ U: t- D3 x8 j    解决方案:                                                                4 w" O' W9 n. {# p2 e
                                                                从根本上说,它们执行相同的操作,这是提供一种PL / SQL中执行DDL这台机器不支持语句的机制。如果内存对我有用,那就是Oracle- ~7 k' v2 w0 V2 A7 X
7版本的DBMS_UTILITY可用于软件包EXEC_DDL_STATEMENT,8中只引入本机动态SQL(EXECUTE IMMEDIATE)。
4 ~1 ?/ X8 M& Y' x8 S9 E% o: t; R有些区别。EXECUTEIMMEDIATE主要是关于执行动态SQL(如其NDS别名显示)。我们可以用它。DDL的事实是逐步的。而EXEC_DDL_STATEMENT()-就像建议一样-只能执行DDL。% X# T1 E7 ~8 |% p; j; F0 n
但不仅仅是保留DBMS_UTILITY版本是向后兼容的。它还有一个整洁的技能,我们不能使用它EXECUTE IMMEDIATE来完成-
) S6 X* F/ h0 l1 m/ w" \分布式运行DDL。我们可以从数据库上创建一个表,我们可以从本地数据库中运行此语句(假设我们的用户在那里有必要的特权):
; Y# O3 a9 Q; F) ^+ b1 l% \, DSQL>  exec DBMS_UTILITY.EXEC_DDL_STATEMENT@remote_db('create table t1 (id number)');我不建议这样做,只是说可以。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则