2017-03-17 1 views
0

오라클에 임시 테이블 (SQL 서버)을 마이그레이션하는 데 어려움을 겪고 있습니다. 대부분 Oracle은 store 프로 시저 내부에서 임시 테이블을 사용하는 것을 고려하지 않지만 SQL Server에서는 임시 테이블을 사용하여 작은 레코드를 가져오고 동일한 테이블을 조작합니다. 이 문제를 해결하는 방법. 임시 테이블을 오라클로 마이그레이션하는 방법에 대한 온라인 기사도 검색하고 있지만 내 기대에 대해 명확하게 설명되어 있지 않습니다. 인라인 뷰, WITH 절, 임시 테이블 대신 참조 커서를 사용하는 것과 같은 정보가 있습니다. 나는 완전히 혼란 스럽다. 제발 제안, 인라인보기, WITH 절, 참조 커서를 사용할 수 있습니다. 이것은 내 지식을 향상시키고 일을 잘하는 데 도움이 될 수 있습니다.오라클에 임시 테이블 (SQL 서버)을 마이그레이션하는 데 어려움이 있습니다.

언제나 새내기를 돕는 데 귀중한 시간을 보냅니다. 감사합니다 알 사탐 hussain

+0

모음집 [[1] (https://docs.oracle.com/cd/B28359_01/appdev.111/b28370/collections.htm#LNPLS00501), [2] (http://www.oracle.com/) .com/technetwork/issue-archive/2012/12-jul/o42plsql-1653077.html)]를 사용하여 동일한 쿼리를 수행 할 수 있습니다. – MT0

+1

오라클에는 임시 테이블이 있습니다. 이 [비슷한 질문] (http://stackoverflow.com/questions/2671518/how-to-create-a-temporary-table-in-oracle)을 확인하십시오. –

+0

대부분의 경우 Oracle에서 임시 테이블이 실제로 필요하지 않습니다. 일반적으로 단일 문장으로 처리하는 것이 더 효율적입니다 (오라클 독자는 작성자를 차단하지 않고 작성자는 독자를 차단하지 않으므로 데이터를 복사하여 "조작"할 필요가 없습니다). 그러나 문제가있는 코드를 표시하지 않았으므로 대답 할 수 없습니다. –

답변

0

많은 질문과 마찬가지로 대답은 "다릅니다"입니다. 몇 가지

  1. 오라클의 "temp"테이블은 GLOBAL TEMPORARY TABLE (GTT)라고 불립니다. 다른 대부분의 공급 업체의 TEMP 테이블과 달리 그 정의는 전역 적입니다. SQL Server (및 기타)의 스크립트 또는 프로그램은 임시 테이블을 만들고 그 임시 테이블은 세션이 끝날 때 사라집니다. 즉, 스크립트 또는 프로그램을 둘 이상의 사용자가 동시에 실행하거나 다시 실행할 수 있습니다. 그러나 GTT는 세션이 끝날 때까지 존재하므로 GTT를 만들려고하는 다음 실행은 이미 있기 때문에 실패합니다. 한 가지 방법은 나머지 응용 프로그램 테이블과 마찬가지로 GTT를 미리 작성한 다음 프로그램을 생성하지 않고 gtt에 삽입하도록 프로그램을 변경하는 것입니다.
  2. 다른 사람들처럼 CTE Common Table Expression을 사용하면 효과적 일 수 있습니다. 구매하려면 먼저 TEMP 테이블을 사용하는 동기에 따라 구매하십시오. 임시 테이블의 장점 중 하나는 일련의 단계에서 "체크 포인트"를 제공하고 중간 임시 데이터 세트에서 통계를 수집 할 수 있다는 점입니다. 그것은 복잡한 처리 집합입니다. CTE는 그 혜택을 제공하지 않습니다.

  3. 기타 컬렉션과 같은 "중간"개체도 사용할 수 있지만 "관리"해야하며 실제로 통계를 수집 할 수있는 이점을 제공하지 않습니다.

그래서 내가 처음에 말했듯이 해결책의 선택은 원래 임시 테이블에 대한 동기에 다소 의존 할 것입니다.

관련 문제