2011-04-18 3 views
1

pl/sql로 임시 테이블을 생성합니다. 즉, &을 실행하면 테이블을 생성하는 이유가 테이블에 삽입됩니다.즉시 테이블을 생성하고 테이블을 업데이트하십시오.

그 후 테이블을 업데이트합니다. 그러나 메신저 업데이트를 수행하기 위해 정적 SQL을 사용하는 ---------

begin 
    execute immediate 'create table t23 as select ''1'' aa from dual'; 
    update t23 set aa ='2' where aa='1'; 
    COMMIT ; 
end; 
+4

임시 테이블이 전혀 필요하지 않은 시간의 80 % - 하나의 SQL에서 수행 할 수 있습니다. 나머지 20 %는 글로벌 임시 테이블 또는 PL/SQL 배열을 사용할 수 있습니다. –

답변

9

를이 테이블 THR 즉시

샘플 코드를 실행 생성되지 않는 오류 테이블이 존재하지 않습니다지고 이것은 PL/SQL이 실행되기 전에 유효성이 검사되므로 현재 존재하지 않는 테이블을 참조하는 것으로 판명됩니다. 정말 동적으로 처음에이 같은 임시 테이블을 만들 수있는 오라클의 나쁜 관행이다, 그러나

begin 
    execute immediate 'create table t23 as select ''1'' aa from dual'; 
    execute immediate 'update t23 set aa =''2'' where aa=''1'''; 
    COMMIT ; 
end; 

: 당신은 업데이트를 수행하는 동적 SQL을 사용할 수 있습니다. 왜 그걸하고 있니? 아마도 우리는 아마 우리가 더 나은 대안을 제안 할 수 있음을 알고 있습니다.

+1

글로벌 임시 테이블을 만듭니다. 어느 누구도 귀하의 데이터를 볼 수 없으며 즉각적인 실행을 피할 수 있습니다. –

+0

@ 토마스 : 나는 그것을 제안했을지 모르지만, 현재로서는 이것이 나 미타가 정말로 필요한 것인지 아닌지 전혀 모른다. –

+1

그것은 pl/sql 프로 시저가 즉시 실행 테이블을 생성 할 때 다른 RDBMS에서 옮겨 졌을 가능성이 가장 높은 코드입니다. 그러나 당신처럼 나는 그 요청이 무엇을위한 것인지 완전히 확신하지 못합니다. 그래서 내가 대답이 아니라 대답을 남겼습니다. –

관련 문제