테이블이 2개로 나누어져 있습니다.
테이블1 : 사원정보 테이블
테이블2 : 사원가족 테이블
테이블3 : 테이블1,테이블2 조인한 결과를 재저장
프로시저를 이용하고 싶음
테이블1
================================================
사원번호 | 성명 | 주민번호 | ...
================================================
20090201 홍길동 700102-1111111
20090301 이길순 800102-2111111
테이블2
================================================
사원번호 | 가족순번 | 성 명 | 주민번호 | ...
================================================
20090201 01 홍만득 000101-3111111
20090201 02 홍만호 030101-3111112
20090201 03 홍아호 030401-3111113
20090301 01 이수아 040101-4111111
테이블3
================================================
사원번호 | 성 명 | 주민번호 | ...
================================================
20090201 홍만득 000101-3111111
20090201 홍만호 030101-3111112
20090201 홍아호 030401-3111113
이런식으로 구성되어 있습니다.
기본적인 테이블이라고 할 수 있죠.
문제는 프로시저로 테이블1과 테이블2를 조인해서 새로운 테이블3에
INSERT 하려고 합니다.
그냥 평범하게 INSERT문과 SELECT을 이용해서 테이블1,테이블2를 조인해서
입력을 할 수 있겠지만 프로시저를 통해서 작업을 하려고 합니다.
프로시저에 대해서 한참 초보입니다.
간단히 SELECT 해서 1 ROW 결과가 나오는 값을 다시 다른 테이블로
INSERT 하는 것은 가능하지만, SELECT 했을때 여러 ROW가 나오면 어떻게 해야 할지 잘
모르겠습니다.
예를 들어 테이블2 같은 경우에 사원번호로 SELECT 했을때 2개 이상의 ROW가
결과값으로 나오면 어떻게 해야 할지 모르겠습니다.
대략 테이블2가 사원번호당 1ROW 의 결과가 나온다면 아래와 같이 하면 될 것 같은데요.
------------------------------------------------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE TEST_PRC
(
v_company IN VARCHAR2,
v_result OUT VARCHAR2
) IS
CURSOR TEST_LOOPX IS
-- 테이블1에서 전체 사원번호 가져오기
SELECT
COMPANY,
EMP_NO
FROM 테이블1
WHERE COMPANY = v_company;
BEGIN
FOR R_LIST IN TEST_LOOPX LOOP
v_company VARCHAR2(2) := v_company;
v_emp_no VARCHAR2(10) := R_LIST.EMP_NO;
v_name VARCHAR2(30) := '';
v_jumin_no VARCHAR2(13) := '';
-- 테이블2에서 원하는 정보 가져와서 변수에 저장
SELECT
NAME,
JUMIN_NO
INTO v_name,
v_jumin_no
FROM 테이블2
WHERE COMPANY = v_company
AND EMP_NO = R_LIST.EMP_NO;
-- 테이블3에 INSERT 하기
INSERT INTO 테이블3(
EMP_NO,
NAME,
JUMIN_NO
) VALUES (
v_emp_no,
v_name,
v_jumin_no
);
END LOOP;
-- 중략 --
-----------------------------------------------------------------------------------------------------------------------
위의 프로시저에서는 테이블1,테이블2가 조인이 안 되어 SELECT 를 했지만,
SELECT 에서 잡다한 것을 추가로 더 가져오신다고 가정하시면 됩니다.
새로운 테이블3는 테이블2의 일부 컬럼 내용과 테이블1의 내용 일부 등이
조인되어서 들어갑니다.
프로시저를 이용해서 테이블2(여러 ROW 나옴)의 일부 컬럼 내용을 새로운 테이블3에
INSERT 하는 방법을 좀 알려주세요.