프로시저를 작성했습니다.. 0 4 2,691

by 영구씨a [PL/SQL] 프로시저 [2010.08.02 16:21:54]



안녕하세요 오라클 왕~초보 입니다ㅠㅠ

제가 구현하려는 프로시저는 아이디 별로 로그인 한 시간을 한 테이블에 저장하고

하는 동시에 프로시저를 콜하게 하는데

그 프로시저는 1시간 별로 그 아이디로 로그인 한 횟수를 count하는 테이블의 데이터를 추가 하는 일을 하는데 에러가 나네요ㅠ ㅜㅠ 좀 알려주세요ㅠㅠㅠㅠㅠ

create or replace procedure login_date
(v_login_date in date, v_id in varchar2)
is
v_date varchar2;
v_chk_date varchar2;
begin
   select to_char(((sysdate)-24/24), 'yyyy/mm/dd/hh24') into v_date from dual;
   selcet to_char(((v_login_date)-24/24), 'yyyy/mm/dd/hh24') into v_chk_date from dual;
   if v_date = v_chk_date then
   update login_count
   set num = num + 1
   where login_date = v_chk_date and id = v_id;
   else
   insert into login_count
   values(v_id, v_chk_date, 1);
   end if;
end;

그럼 안녕히 계세요ㅠㅠ
by 마농 [2010.08.02 17:13:08]
우선, 에러메시지를 읽어보세요. 그속에 답이 있습니다.

분기 조건이 이상하네요.
현재시간과 로그인시간이 같으면 업데이트하는게 아니죠.
해당 시간의 자료가 테이블에 있는지를 확인해서
있으면 업데이트 없으면 인서트 하는 방식으로 해야죠.

by 영구씨a [2010.08.02 17:17:19]
아.. 제가 잘못 생각 했네요!! 다시 수정해보겠습니다~

감사합니다~~!!! >ㅁ<

by 영구씨a [2010.08.02 17:27:26]
create or replace procedure login_date
(v_login_date in date, v_id in varchar2)
is
v_date varchar2(50);
v_chk_date varchar2(50);
begin
select to_char(((v_login_date)-24/24), 'yyyy/mm/dd/hh24') into v_chk_date from dual;
select login_date into v_date from login_count where login_date = v_chk_date;
if v_date = v_chk_date then
update login_count
set num = num + 1
where login_date = v_chk_date and id = v_id;
else
insert into login_count
values(v_id, v_chk_date, 1);
end if;
end;

이렇게 했더니 됐어요!! 감사합니다~~

by 마농 [2010.08.02 17:29:49]
조건이 부족하네요.
where login_date = v_chk_date;
where login_date = v_chk_date and id = v_id;
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입