프로시져에서 한개 row 가져 오는 법 질문 입니다. 0 5 1,404

by 후레쉬 [PL/SQL] [2014.11.13 13:49:07]


CREATE OR REPLACE PROCEDURE SP_SELECT_ROW
(
P_SEQ IN INT              --SEQ
)
IS
TYPE RECORD1 IS RECORD
(
V_NAME VARCHAR2(200),
V_TEL VARCHAR2(200),
V_ADDR VARCHAR2(200)
);
REC1 RECORD1;
BEGIN

    --DBMS_OUTPUT.ENABLE;    --주석을 풀어도 안되네요.
    
    select
    name, tel, addr 
    INTO REC1.V_V_NAME, REC1.V_TEL, REC1.V_ADDR
    from tbl1
    where seq = P_SEQ;
    
    --DBMS_OUTPUT.PUT_LINE( '이름 : ' || REC1.V_V_NAME );    --주석을 풀어도 안되네요.
    
end;
/

토드에서 위와 같이 프로시져를 만들고, 아래와 같이 실행했는데, 결과값이 안나오네요. (데이타는 있는데요.)

execute SP_SELECT_ROW(235);

제가 뭘 잘못 하고 있는거죠?
답변 부탁 드립니다.

by mypark [2014.11.13 14:10:24]

토드는 사용을 안 해봐서 같은지는 모르겠지만
SET SERVEROUTPUT ON; 을 한 번 실행시켜보세요.


by 마농 [2014.11.13 14:28:17]

토드 아래쪽 결과 텝중 [Data Grid] 말고 [DBMS Ouput] 텝이 있을 거에요.

거기 들어가 보시면 빨간불 들어온거 있을 거에요.

누르시면 녹색불 들어옵니다.

이 텝에서 녹색불 킨 상태로 실행결과 확인하세요.


by 후레쉬 [2014.11.13 14:43:37]

마농님 답변 감사드립니다.

결과가 잘 보이네요. 근데, 원래 Data Grid 에서는 안보이는건가요?

결국 위의 프로시죠가 잘못 된건 없다는 말씀이죠?


by 마농 [2014.11.13 14:48:35]

네. dbms_output 은 Data Grid 에서는 안보입니다.

딱히 잘못된건 없지만 개선의 여지가 있습니다.

- INTO 절에서 일일이 적어줄 필요 없이 그냥 REC1 통으로 받으시면 되구요.

- 해당 Seq 가 없을 경우를 대비해 Exception 절을 추가하는게 좋습니다.


by 후레쉬 [2014.11.13 15:32:25]

마농님 답변 갑사 드립니다 ^^

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입