아핫뉴스실시간 인기검색어
아핫뉴스 화산 이미지
아하

생활

생활꿀팁

꾸준한물개201
꾸준한물개201

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개의 답변이 있어요!
    • 고급스런비쿠냐84
      고급스런비쿠냐84

      안녕하세요 오라클에서 프로시져실행 시 조회를 하려면 프로시져 파라미터에 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);