Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle:DBMS_UTILITY.EXEC_DDL_STATEMENT vs WYKONAJ NATYCHMIAST

Zasadniczo robią to samo, czyli zapewniają mechanizm wykonywania instrukcji DDL w PL/SQL, który nie jest obsługiwany natywnie. Jeśli pamięć mi dobrze służy, EXEC_DDL_STATEMENT był dostępny w wersji Oracle 7 pakietu DBMS_UTILITY, podczas gdy Native Dynamic SQL (EXECUTE IMMEDIATE) został wprowadzony dopiero w 8.

Jest kilka różnic. EXECUTE IMMEDIATE polega głównie na wykonywaniu dynamicznego SQL (jak wskazuje jego alias NDS). fakt, że możemy go używać do DDL, jest na marginesie. Natomiast EXEC_DDL_STATEMENT() - jak sugeruje - może wykonywać tylko DDL.

Ale wersja DBMS_UTILITY nie jest zachowywana tylko dla wstecznej kompatybilności, ma jedną fajną sztuczkę, której nie możemy zrobić z EXECUTE IMMEDIATE - uruchamianie DDL w sposób rozproszony. Możemy uruchomić tę instrukcję z naszej lokalnej bazy danych, aby utworzyć tabelę w zdalnej bazie danych (pod warunkiem, że nasz użytkownik ma tam niezbędne uprawnienia):

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

Nie polecam tego, po prostu mówię, że można to zrobić.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego oracle nie pokazuje całkowitej części ułamka dziesiętnego

  2. Używasz wielu sterowników Oracle JDBC w jednej aplikacji Java?

  3. Jak używać parametru dynamicznego w klauzuli IN zapytania o nazwie JPA?

  4. Zamiana cyfr/liczb w słowach na walutę INR (rupie indyjskie) w Oracle PL/SQL

  5. Doradca ds. kompresji 11gR2 =Zło