안녕하세요
여기 저기 찾아보다 자료가 없어서 문의를 드립니다.
두대의 서버에 오라클이 설치되어있고
데이터를 주는 쪽에서는 패키지로 데이터를 주고 데이터를 받는쪽에서 현재 프로시저를 짜고 있습니다.
데이터를 주는 쪽의 패키지는
CREATE OR REPLACE PACKAGE DEV.PKG_INFO AS
/*** 시행계획 리스트 ***/
TYPE TYP_abc_LIST IS RECORD(
a VARCHAR2(12),
b NUMBER,
c VARCHAR2(200),
d VARCHAR2(2),
e VARCHAR2(4),
f NUMBER
);
TYPE REF_abc_LIST IS REF CURSOR RETURN TYP_abc_LIST;
PROCEDURE USP_GET_abc_LIST(in_a IN VARCHAR2,
in_b IN VARCHAR2,
in_c IN NUMBER,
in_d IN NUMBER,
RESULTSET IN OUT REF_abc_LIST
);
END PKG_INFO;
위의 형태로 되어있습니다.
저는 받는쪽을 만들어야 하는데
서로 다른 서버이기때문에 링크는 걸어줬는데
이 이후부터 프로시저에 서 문제가 생기네요
resultset를 사용하였기 때문에 cursor로 받아야 할듯한데
CREATE OR REPLACE PROCEDURE ForCursor_Test
IS
CURSOR dept_sum IS
SELECT b.dname, COUNT(a.empno) cnt, SUM(a.sal) salary
FROM emp a, dept b
WHERE a.deptno = b.deptno
GROUP BY b.dname;
BEGIN
-- Cursor를 FOR문에서 실행시킨다
FOR emp_list IN dept_sum LOOP
DBMS_OUTPUT.PUT_LINE(’부서명 : ’ || emp_list.dname);
DBMS_OUTPUT.PUT_LINE(’사원수 : ’ || emp_list.cnt);
DBMS_OUTPUT.PUT_LINE(’급여합계 : ’ || emp_list.salary);
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM||’에러 발생 ’);
END;
예제를 찾아보니 붉은색 부분만 수정하면 어느정도 맞출수 있을거같은데 도대체 모르겠더군요
고수님들의 도움을 부탁드립니다.