작성
·
92
·
수정됨
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으로 받는 것이 불가능한걸까요?
강의에서 앞으로도 프로시저를 계속 사용할 것이라고 말씀하셨는데
이것 때문에 실습 따라가기에 불편함이 있을까봐 걱정입니다.
친절하고 자세한 답변 기대하며
미리 감사드립니다.
답변 2
0
안녕하세요.개발자park입니다.
오라클은 어떻게 하는지 아래 강의에 나와있습니다.
7강 3:38초 부터 보시면 됩니다.
무료로 수강하기:
수강생이시면 무료 쿠폰요청을 닉네임을 적어서
간단하게 vmproductor@gmail.com로 메일을 보내주세요.
여기는 공개된 게시판이기에 메일로 부탁드립니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. trefoil77님.
Oracle 데이터베이스를 사용할 때, 프로시저 내에서 SELECT문을 사용하려면 반드시 INTO 절을 사용하여 조회 결과를 로컬 변수에 저장해야 합니다. 이는 Oracle PL/SQL의 규칙으로, SELECT문의 결과를 직접 리턴하는 기능이 없는 대신, 조회한 값을 OUT 파라미터나 구조체 등을 통해 반환해야 합니다.
참조 커서 사용: 프로시저에서 SYS_REFCURSOR를 OUT 파라미터로 선언하여 여러 레코드를 반환할 수 있습니다. MyBatis에서도 해당 참조 커서를 받아 사용할 수 있습니다.
OUT 파라미터로 반환: 단일 행의 결과를 원한다면 SELECT 결과를 여러 OUT 파라미터에 매핑하여 반환할 수 있습니다. 이는 HashMap으로 데이터를 받기보다 구체적인 필드를 OUT으로 설정하여 직접 가져오는 방법입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
단지 기존 강의는 오래되어서 음질이 별로이며,spring framework쪽보다는 프로시저 작성 만 참조하시는 것을 추천드립니다.