create or replace procedure pro_update_userScore
(
p_table_score_name IN CHAR,
p_win_count IN NUMBER,
p_lose_count IN NUMBER,
p_equal_count IN NUMBER,
p_dis_count IN NUMBER,
p_user_score IN NUMBER,
p_speed IN NUMBER,
p_user_level IN NUMBER,
p_user_experience IN NUMBER,
p_user_id IN NUMBER,
n_return OUT NUMBER
)
is
CURSOR cur_score_Info(cr_user_id NUMBER)is
select USER_ID, USER_LEVEL,USER_EXPERIENCE,USER_SCORE,WIN_COUNT,
LOSE_COUNT,EQUAL_COUNT,DIS_COUNT,SPEED
from p_table_score_name ||
where user_id=cr_user_id;
ret_cr_score_info cur_score_Info%ROWTYPE;
NO_USER_EXCSIT EXCEPTION;
begin
i_count:=0;
n_return :=0;
FOR ret_cur_scrore IN cur_score_Info(p_user_id) LOOP
ret_cr_score_info:=ret_cur_scrore;
i_count:=i_count+1;
END LOOP;
IF i_count=0 THEN
RAISE NO_USER_EXCSIT;
END IF;
UPDATE p_table_score_name
SET USER_LEVEL=p_user_level,USER_EXPERIENCE=p_user_experience,USER_SCORE=p_user_score,
WIN_COUNT=p_win_count,LOSE_COUNT=p_lose_count,EQUAL_COUNT=p_equal_count,
DIS_COUNT=p_dis_count,SPEED=p_speed
WHERE user_id=p_user_id;
COMMIT;
EXCEPTION
WHEN NO_USER_EXCSIT THEN
ROLLBACK;
n_return :=12;
WHEN OTHERS THEN
ROLLBACK;
IF SQLCODE=1 THEN
n_return :=13;
ELSE
n_return :=14;
END IF;
end pro_update_userScore;