MSSQL과 오라클 프로시저 차이
안녕하세요
오라클 DB를 사용해서 프로그래밍을 하는 중에 궁금한게 있어 문의드립니다.
1. MSSQL에서 프로시저를 작성
CREATE PROCEDURE proc_test1 AS
SELECT *
FROM TEST
END
proc_test1이라고 호출을 하면 테이블의 데이터가 다 조회됩니다.
2. MSSQL에서 처럼 오라클에서 프로시저작성할 때 , 테이블의 데이터가 다 나오게 하려면 어떻게 해야할까요?
CREATE OR REPLACE PROCEDURE proc_test2 () IS
BEGIN
FOR R IN( SELECT * FROM TEST ) LOOP
DBMS_~~~
END LOOP ;
END
위와 같이 했지만, 해당 건도 아닌것 같아서 혹시 알고계시는 예시나 자료 있으면 요청드립니다.
3. 프로시저로 안되면 function을 사용해야 할까요?
도와주세요~
안녕하세요 오라클에서 프로시져실행 시 조회를 하려면 프로시져 파라미터에 out cursor 가 있어야합니다.
CREATE OR REPLACE PROCEDURE proc_test2
(
Out_Cursor out SYS_REFCURSOR
)
IS
BEGIN
OPEN Out_Cursor FOR
SELECT * FROM TEST ;
END proc_test2;
위와같이 사용하시면 됩니다
안녕하세요.
오라클의 Procedure로 테이블의 전체 데이터를 출력하기에는 호출하는 방법 및 처리 방법이 복잡합니다.
Procedure 대신 Table Function을 사용하시면 좀 더 쉽게 할 수 있습니다.
-- TYPE명 및 컬럼 등은 맞게 변경하시기 바랍니다. 1. TP_TEST TYPE 생성 CREATE OR REPLACE TYPE TP_TEST AS OBJECT ( NO NUMBER, NM VARCHAR(100) ); 2. TB_TEST TYPE 생성 CREATE OR REPLACE TYPE TB_TEST AS TABLE OF TP_TEST; 3. FN_TEST FUNCTION 생성 -- DUAL 테이블 대신에 사용할 테이블로 대체하시면 됩니다. CREATE OR REPLACE FUNCTION FN_TEST RETURN TB_TEST IS V_RSLT TB_TEST; BEGIN SELECT TP_TEST(A.NO, A.NM) BULK COLLECT INTO V_RSLT FROM (SELECT 1 NO , '홍길동' NM FROM DUAL) A; RETURN V_RSLT; END FN_TEST; 4. 사용 방법 SELECT NO , NM FROM TABLE(FN_TEST);