아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
꾸준한물개201
꾸준한물개20121.06.09

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을 사용해야 할까요?

도와주세요~

55글자 더 채워주세요.
답변의 개수2개의 답변이 있어요!
  • 안녕하세요 오라클에서 프로시져실행 시 조회를 하려면 프로시져 파라미터에 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;

    위와같이 사용하시면 됩니다


  • 탈퇴한 사용자
    탈퇴한 사용자21.06.09

    안녕하세요.

    오라클의 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);