Oracle: DBMS_UTILITY.EXEC_DDL_STATION 대 즉시 실행
어떤 것들이 다른가요?DBMS_UTILITY.EXEC_DDL_STATEMENT
그리고.EXECUTE IMMEDIATE
?
기본적으로 PL/SQL에서 DDL 문을 실행하는 메커니즘을 제공하는 것과 같은 작업을 수행하지만 기본적으로 지원되지는 않습니다.메모리를 사용할 수 있다면 EXEC_DDL_STATION은 Oracle 7 버전의 DBMS_UTILITY 패키지에서 사용할 수 있는 반면 Native Dynamic SQL(EXECUTE ImmEDITY)은 8 버전에서만 도입되었습니다.
몇 가지 차이점이 있습니다.EXECUMENT Immediate는 주로 동적 SQL을 실행하는 것입니다(NDS 별칭에서 알 수 있음).DDL에 사용할 수 있다는 사실은 부수적인 것입니다.반면 EXEC_DDL_STATION()은(는) DDL만 실행할 수 있습니다.
그러나 DBMS_UTILITY 버전은 이전 버전과의 호환성을 위해 유지되는 것이 아니라 분산 방식으로 DDL을 실행하는 EXECUTE Immediate로는 할 수 없는 한 가지 깔끔한 트릭이 있습니다.로컬 데이터베이스에서 이 문을 실행하여 원격 데이터베이스에 테이블을 만들 수 있습니다(사용자에게 필요한 권한이 있는 경우).
SQL> exec DBMS_UTILITY.EXEC_DDL_STATEMENT@remote_db('create table t1 (id number)');
저는 이것을 추천하는 것이 아니라 단지 할 수 있다고 말하는 것입니다.
제가 답장이 9년 늦었다는 것을 알지만 한 가지 더 차이가 있습니다.
dbms_message.exec_ddl_statement는 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;
언급URL : https://stackoverflow.com/questions/6973003/oracle-dbms-utility-exec-ddl-statement-vs-execute-immediate
'source' 카테고리의 다른 글
이 식은 호출할 수 없습니다.'번호' 유형에 호출 서명이 없습니다. (0) | 2023.06.10 |
---|---|
Firebase에서 노드를 삭제/제거하는 방법 (0) | 2023.06.10 |
모든 그룹을 선택하고 사용자가 그룹에 있는지 확인합니다. (0) | 2023.06.10 |
GetText를 사용하여 클립보드에서 텍스트 가져오기 - 빈 클립보드에서 오류 방지 (0) | 2023.06.10 |
Ionic에서 알림 상자 외부를 클릭할 때 알림 상자를 닫지 않는 방법 (0) | 2023.06.10 |