출처: https://bumcrush.tistory.com/182 [맑음때때로 겨울]
반응형

MS-SQL 에선 프로시저 만들때 매개변수를 집어넣고 SELECT * FROM EMP 하면 바로 출력이 된다. 하지만 Oracle 은 다르다. 커서를 이용해야 출력값이 2행이상인 값들을 받아올수 있다. 예제를 보자  예제를 보면 간단히 이해 될것이다.

 

create or replace NONEDITIONABLE PROCEDURE CursorExample (
    p_USER_CD           VARCHAR2,
    c_user   IN OUT SYS_REFCURSOR
)
IS
BEGIN
    OPEN c_user FOR 
    SELECT * FROM emp WHERE USER_CD = p_USER_CD;
END;

 

이렇게 SYS_REFCURSOR를 매개변수로 만들어 주고 SELECT문 위에 Cursor를 열어주면된다. 

이것을 실행할떄에는

variable rc refcursor;
EXECUTE emp_by_job ('1001', :rc);
print rc;

여기서 많이 골머리를 썩었다.

MS-SQL 은 프로시저를 실행하면 바로 값이 도출되었는데. 커서를 이용하다보니 

1. 변수선언

2. 프로시저 실행

3. 변수에 값을담는다.

4. 출력

 

이런순서가 된다. 

 

 

반응형

+ Recent posts