강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của trefoil775419
trefoil775419

câu hỏi đã được viết

3. Khóa học phát triển web [Kiến trúc doanh nghiệp (EA)

7강 프로시저 호출하기 부분에서 Oracle의 경우 resultMap을 어떻게 받을 수 있을까요?

Viết

·

246

·

Đã chỉnh sửa

0

안녕하세요

EA 강의를 시작으로 열심히 들어보려 하고 있습니다.

 

사정 상 MariaDB 대신 Oracle을 사용하여

실습을 진행하고 있는데요 7강에서 문제가 발생했습니다.

 

오라클은 Procedure를 생성할 때

SELECT절이 있으면 반드시 INTO를 적어야 하는 것 같습니다.

 

SQL> edit

Wrote file afiedt.buf

1 CREATE OR REPLACE procedure JHBAEK.sp_myproc (

2 in_userid tbl_user.userid%type,

3 in_userpw tbl_user.userpw%type,

4 out_state out number

5 )

6 is

7 begin

8 update tbl_user

9 set userpw = in_userpw

10 ;

11 select userid, userpw

12 from tbl_user

13 where userid = in_userid

14 ;

15 out_state := 0;

16 end sp_myproc

17* ;

SQL> /

Warning: Procedure created with compilation errors.

SQL> show errors

Errors for PROCEDURE JHBAEK.SP_MYPROC:

LINE/COL ERROR

-------- -----------------------------------------------------------------

11/2 PLS-00428: an INTO clause is expected in this SELECT statement

SQL>

 

오라클의 경우 프로시저에서 SELECT 한 결과를

mybatis 통해 HashMap으로 받는 것이 불가능한걸까요?

 

강의에서 앞으로도 프로시저를 계속 사용할 것이라고 말씀하셨는데

이것 때문에 실습 따라가기에 불편함이 있을까봐 걱정입니다. 

 

친절하고 자세한 답변 기대하며

미리 감사드립니다.

 

spring전자정부프레임워크

Câu trả lời 2

0

vmproductor0202님의 프로필 이미지
vmproductor0202
Người chia sẻ kiến thức

안녕하세요.개발자park입니다.

오라클은 어떻게 하는지 아래 강의에 나와있습니다.

7강 3:38초 부터 보시면 됩니다.

https://www.inflearn.com/course/lecture?courseSlug=%EC%9B%B9%EA%B0%9C%EB%B0%9C-%EC%BD%94%EC%8A%A4-%EC%8A%A4%ED%94%84%EB%A7%81-%EC%A0%84%EC%9E%90%EC%A0%95%EB%B6%80&unitId=38017&subtitleLanguage=ko

무료로 수강하기:

https://www.inflearn.com/course/lecture?courseSlug=%EC%9B%B9%EA%B0%9C%EB%B0%9C-%EC%BD%94%EC%8A%A4-ea-%EC%A0%84%EC%9E%90%EC%A0%95%EB%B6%80-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC&unitId=155005&subtitleLanguage=ko

수강생이시면 무료 쿠폰요청을 닉네임을 적어서

간단하게 vmproductor@gmail.com로 메일을 보내주세요.

여기는 공개된 게시판이기에 메일로 부탁드립니다.

감사합니다.

vmproductor0202님의 프로필 이미지
vmproductor0202
Người chia sẻ kiến thức

단지 기존 강의는 오래되어서 음질이 별로이며,spring framework쪽보다는 프로시저 작성 만 참조하시는 것을 추천드립니다.

0

안녕하세요, 인프런 AI 인턴입니다. trefoil77님.

Oracle 데이터베이스를 사용할 때, 프로시저 내에서 SELECT문을 사용하려면 반드시 INTO 절을 사용하여 조회 결과를 로컬 변수에 저장해야 합니다. 이는 Oracle PL/SQL의 규칙으로, SELECT문의 결과를 직접 리턴하는 기능이 없는 대신, 조회한 값을 OUT 파라미터나 구조체 등을 통해 반환해야 합니다.

해결 방안

  1. 참조 커서 사용: 프로시저에서 SYS_REFCURSOR를 OUT 파라미터로 선언하여 여러 레코드를 반환할 수 있습니다. MyBatis에서도 해당 참조 커서를 받아 사용할 수 있습니다.

  2. OUT 파라미터로 반환: 단일 행의 결과를 원한다면 SELECT 결과를 여러 OUT 파라미터에 매핑하여 반환할 수 있습니다. 이는 HashMap으로 데이터를 받기보다 구체적인 필드를 OUT으로 설정하여 직접 가져오는 방법입니다.

참고 자료

  • MyBatis에서 Oracle 프로시저를 사용하는 예제는 여기에서 확인하실 수 있습니다. 해당 질문에서는 사용자 정의 프로시저와 관련된 문의에 대한 해결 방법을 안내하고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Hình ảnh hồ sơ của trefoil775419
trefoil775419

câu hỏi đã được viết

Đặt câu hỏi