2014-12-17 4 views
1

주요 개념 : 일부 선택 항목과 함께 3 개의 테이블 (임시 테이블)을 만들고 1과 2를 취해 비교하고 싶습니다.임시 테이블을 사용하는 Oracle 저장 프로 시저

결과 삽입 3 테이블.

create or replace PROCEDURE CHECK_PARAMS 
AS 
TYPE row IS RECORD (id NUMBER,   
        count_id NUMBER); 
TYPE my_table_type IS TABLE OF row; 

first my_table_type; 
second my_table_type; 
third my_table_type;  
BEGIN 
    SELECT id, count_id bulk collect -- GOOD SELECT 
    INTO first 
    FROM 
    (SELECT test1.A_ID id, 
      COUNT(test1.A_ID) count_id 
    FROM MY_OTHER_TABLE1 test1, 
      MY_OTHER_TABLE2 test2 
    WHERE test1.A_ID = test2.A_ID 
    GROUP BY test1.A_ID); 

    SELECT id, count_id bulk collect -- GOOD SELECT 
    INTO first 
    FROM 
    (SELECT test1.A_ID id, 
      COUNT(test1.A_ID) count_id 
    FROM MY_OTHER_TABLE3 test1, 
      MY_OTHER_TABLE4 test2 
    WHERE test1.A_ID = test2.A_ID 
    GROUP BY test1.A_ID); 

    SELECT id, count_id bulk collect -- ORACLE CAN'T FIND MY TEMP TABLES 
    INTO third 
    FROM frist, second; -- **HERE I GOT ERROR: ORA-00942 table or view does not exist** 

이 문제점은 무엇입니까 :

내 절차는 같다?

+0

한 가지 문제는 최종 선택에서 오타를 가지고있다. FROM first 대신 FREST FROM이 있습니다. – BateTech

답변

1

당신은 절차

create TYPE t_row as object (id NUMBER,   
        count_id NUMBER); 

create TYPE my_table_type IS TABLE OF t_row; 

이외의 유형을 정의해야하고 사용하는 것보다 table

SELECT id, count_id bulk collect -- ORACLE CAN'T FIND MY TEMP TABLES 
    INTO third 
    FROM table(first), table(second); 
+0

새로운 유형을 만들고 싶지 않은 경우. 다른 변형이 있습니까? 일부 select를 지역 변수에 저장해야합니다. 커서는 어때? – neee

+1

나는 모든 것을 하나의 select 문으로 작성한다. 사이에 단계가 없으면 하나 이상의 진술을 만들 필요가 없습니다. –

+0

예, 알았지 만 다음 번에 이해하고 사용하기 위해이 문제를 해결하고 싶습니다. 그리고 다음 번엔 지금입니다) – neee