programing

Oracle에서 임시 테이블로 선택

magicmemo 2023. 6. 25. 18:38
반응형

Oracle에서 임시 테이블로 선택

저는 다음과 같은 일을 하려고 노력하고 있습니다.

select * into temp from (select * from student);

그것은 나에게 다음과 같은 오류를 줍니다.

ERROR at line 1:
ORA-00905: missing keyword

실제 예제에서는 하위 쿼리(학생에서 * 선택)가 더 복잡합니다.

이것을 저장 프로시저에서 사용하고 싶기 때문에 테이블 자체를 만들고 싶지 않습니다.임시 테이블을 사용하여 코드를 더 읽기 쉽게 만들고 싶습니다.

그런 다음 다음과 같은 작업을 수행해야 합니다.

declare
   type t_temp_storage is table of student%rowtype;
   my_temp_storage t_temp_storage;
begin
   select * bulk collect into my_temp_storage from student;
   for i in 1..my_temp_storage.count
    loop
    dbms_output.put_line('here I am '||my_temp_storage(i).stuid);
   end loop; 
 end;

테이블 임시가 존재하지 않으면 테이블 임시를 작성해야 합니다.

 CREATE TABLE temp as
    SELECT * FROM student;

임시 테이블에 "선택"하지 않습니다.선택한 결과에서 온도 테이블에 삽입하려면 다음을 수행합니다.

insert into temp
select * from student;

다음과 같은 유용성을 발견했습니다.

CREATE GLOBAL TEMPORARY TABLE MY_TEMPORARY_TABLE ON COMMIT PRESERVE ROWS AS (
    SELECT * FROM MY_TABLE WHERE MY_CONDITION
) 

COMMIT PRESERVE ROWS 절은 기본 행(COMMIT DELETE ROWS)을 재정의합니다.기본값을 유지하는 경우 레코드는 커밋할 때마다 삭제되므로 자동 커밋 클라이언트에서 작업하는 경우 레코드는 생성 후 즉시 삭제됩니다.두 경우 모두 테이블은 세션 기간 동안만 존재합니다.

언급URL : https://stackoverflow.com/questions/28653276/select-into-a-temporary-table-in-oracle

반응형