저장프로시저 반환질문입니다. 0 2 1,554

by 허정 [Oracle 기초] [2012.04.12 10:49:43]


안녕하세요!

Oracle 이제 공부하기 시작한 학생입니다.

MSSql은 저장프로시저에서 return 해주면 cs코드에서 반환받을 수 있는데

오라클에서는 어떻게 해야되는지 오래 고민했는데 답이 풀리지 않아 질문올립니다ㅜㅜ

2가지 방법을 생각해보았습니다.

IF ELSE 문을 사용하여 하려고 합니다.

CREATE OR REPLACE PROCEDURE CheckID
(MemID in varchar2,MemPW in varchar2,out retVal)
IS
BEGIN
    IF (select count(*) from IDTable where ID=MemID)>0
    THEN
        retVal:=1;
    ELSE
        retVal:=0;
    END IF;
END CheckID;

IDTable에 입력받은 아이디와 같은 아이디가 하나라도 있다면 out 파라미터 retVal 1은 반환하고 없으면 0을 반환하게

하려고 하는 저장프로시저 코드를 작성했는데 안되네요 ㅠㅜ 심볼 Select를 만났다구..


두번 째 방법으로는
CREATE OR REPLACE PROCEDURE CheckID
(MemID in varchar2,MemPW in varchar2)
IS
retVal number;
BEGIN
    Select ID,decode(ID,MemID,1,0) from IDTable;
END CheckID;

이것저것 알아보다 보니 Decode 란 함수를 사용하면 편할 것 같더라구요.

저기선 ID와 MemID가 같은게 잇다면 1을 반환하고 아니라면 0을 반환하라는 의미로 생각해서 작성한건데..

select 절에 into가 없다고 에러가 뜨구 저 문법이 맞는지도 모르겠네요 ㅜㅜ

저 두 방법중 decode 를 사용하는게 더 맞는 방법이라고 생각이 드는데

답변 부탁드립니다..ㅜㅜ

cs코드에서 결과값을 반환받을 수 있는 방법이요..ㅜㅜ
by 손님 [2012.04.12 14:19:31]
CREATE OR REPLACE PROCEDURE CheckID
(MemID in varchar2, MemPW in varchar2, retVal OUT number)
IS
BEGIN
  Select decode(ID,MemID,1,0) 
  into retVal
  from IDTable;
exception
  when no_data_found then 
    null;
END CheckID;

by 허정 [2012.04.12 16:47:55]
이거땜에 고생많이했는데 기분좋네요 ㅎㅎㅎㅎㅎ

감사합니다 정말 많은 도움이 됬어요^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입