2014-07-19 2 views
-1

커서의 값을 두 개의 테이블에 삽입하고 있습니다. 표 A와 B 하지만 B는테이블에 값을 삽입하고 PL./SQL에서 하나의 추가 열을 삽입하십시오.

QUERY

CREATE OR REPLACE PROCEDURE fast_proc (p_array_size IN PLS_INTEGER DEFAULT 100) 
IS 

TYPE ARRAY IS TABLE OF all_objects%ROWTYPE; 
l_data ARRAY; 

    CURSOR c IS 
    SELECT col1 ,col2,col3 
    FROM dual; 

BEGIN 
    OPEN c; 
    LOOP 
    FETCH c BULK COLLECT INTO tableB LIMIT p_array_size ; 

    FORALL i IN 1..tableB .COUNT 
    INSERT INTO t2 VALUES tableB (i); 

    EXIT WHEN c%NOTFOUND; 
    END LOOP; 
    CLOSE c; 
END fast_proc; 

로의 추가 열의 하나를해야합니다하지만 상태 열이 채워지고하지 않는 한이 나에게 오류를주고있다. 커서에서 모든 값을 삽입 한 다음 상태를 harcoded 'A'로 추가하는 방법은 무엇입니까?

같은 커서가이 부분이 커서에서 가져오고 테이블에 삽입하는 것을 시도하고 이후에가는 경우 표 A.

+0

왜이 용도로 커서를 사용하고 있습니까? 그리고'SELECT col1, col2, col3 FROM dual; '명령문은 처음부터 유효하지 않습니다 (이중에는'col1'이 없습니다); –

답변

0

에 삽입하는 데 사용됩니다 나는 쿼리에 추가 할 수 없습니다 테이블에 상태를 추가하십시오. 왜 동시에하지 않습니까?

CURSOR c IS 
SELECT col1 ,col2,col3,'A' 
FROM dual; 

'A'는 상태 열이 올 것입니다.

그리고 당신이 가져 커서 만 이후에 값을 삽입 할 경우,이 같은에 삽입 문을 변경 :

INSERT INTO t2(col1 ,col2,col3) VALUES tableB(i); 

삽입 즉 장소를해야 열을 지정, 아웃 상태 열을 남겨 그것의.

관련 문제