Oracle 데이터베이스에 임시 테이블을 만들고 싶습니다.
같은 것
Declare table @table (int id)
SQL 서버에서
그런 다음 select 문으로 채 웁니다.
가능할까요?
감사
답변:
네, Oracle에는 임시 테이블이 있습니다. 여기에 그들을 설명 하는 AskTom 기사에 대한 링크가 있으며 여기 에 공식 오라클 CREATE TABLE 문서가 있습니다.
그러나 Oracle에서는 임시 테이블 의 데이터 만 임시입니다. 테이블은 다른 세션에서 볼 수있는 일반 개체입니다. Oracle에서 임시 테이블을 자주 만들고 삭제하는 것은 나쁜 습관입니다.
CREATE GLOBAL TEMPORARY TABLE today_sales(order_id NUMBER)
ON COMMIT PRESERVE ROWS;
Oracle 18c는 단일 세션 메모리 내 개체 인 개인 임시 테이블을 추가했습니다. 자세한 내용 은 설명서 를 참조하십시오. 개인용 임시 테이블은 동적으로 작성 및 삭제할 수 있습니다.
CREATE PRIVATE TEMPORARY TABLE ora$ptt_today_sales AS
SELECT * FROM orders WHERE order_date = SYSDATE;
임시 테이블은 유용 할 수 있지만 Oracle에서는 일반적으로 남용됩니다. 인라인 뷰를 사용하여 여러 단계를 단일 SQL 문으로 결합하면 이러한 문제를 피할 수 있습니다.
CREATE TABLE AS SELECT
: LOB 열이있는 원격 테이블 SELECT
에서 직접 선택할 수 없으므로 선택 합니다. 저는 원격 데이터베이스에서 레코드를 복사하는 절차를 작성 중이며 이것이 제 해결책이었습니다. 레코드를 GTT로 가져온 다음 그로부터 "실제"테이블로 복사하는 것입니다.
팁 .. Oracle의 임시 테이블은 SQL Server와 다릅니다. 모든 세션이 아닌 한 번만 생성합니다. 여기에 삽입 한 행은 세션에서만 볼 수 있으며 세션 을 종료 할 때 (또는 사용하는 "ON COMMIT"절에 따라 트랜잭션이 종료 될 때) 자동으로 삭제됩니다 (예 : TRUNCATE
아님 DROP
).
DELETED
, DROP
ped가 아닙니다 .
CREATE GLOBAL TEMPORARY TABLE Table_name
(startdate DATE,
enddate DATE,
class CHAR(20))
ON COMMIT DELETE ROWS;