2011-08-07 27 views

Respuesta

28

Fundamentalmente hacen lo mismo, que es proporcionar un mecanismo para ejecutar sentencias DDL en PL/SQL, que no es compatible de forma nativa. Si la memoria me sirve, el EXEC_DDL_STATEMENT estaba disponible en la versión Oracle 7 del paquete DBMS_UTILITY, mientras que SQL nativo SQL (EXECUTE INMEDIATA) solo se introdujo en 8.

Hay un par de diferencias. EJECUTAR INMEDIATO se trata principalmente de ejecutar SQL dinámico (como indica su nombre NDS). el hecho de que podemos usarlo para DDL es por el momento.

Pero la versión DBMS_UTILITY no se conserva solo por compatibilidad con versiones anteriores, tiene un truco muy bueno que no podemos hacer con EXECUTE IMMEDIATE - ejecutar DDL de forma distribuida. Podemos ejecutar esta declaración de nuestra base de datos local para crear una tabla en una base de datos remota (que proporciona nuestro usuario tiene los privilegios necesarios allí):

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

no estoy recomendando esto, basta decir que se puede hacer.

Cuestiones relacionadas