Oracle 函数一则

一个验证机制。
如果用户登陆成功,
就给该用户加分,
并且写入另外一张登陆表

CREATE OR REPLACE FUNCTION FUN_AUTHORIZE(
usr IN TBL_USERS.USR_NAME%TYPE,
pwd IN TBL_USERS.USR_PWD%TYPE)
RETURN BOOLEAN AS

var_usr_id TBL_USERS.USR_ID%TYPE;

var_date TBL_LOGIN_LOG.LOG_TIME%TYPE := SYSTIMESTAMP;

var_points TBL_USERS.USR_POINTS%TYPE;

CURSOR cur_usr (p_usr IN TBL_USERS.USR_NAME%TYPE,
p_pwd IN TBL_USERS.USR_PWD%TYPE)
IS
SELECT USR_ID
FROM TBL_USERS
WHERE TBL_USERS.USR_NAME = p_usr
AND TBL_USERS.USR_PWD = p_pwd;
BEGIN
OPEN cur_usr(usr, pwd);
FETCH cur_usr INTO var_usr_id;
CLOSE cur_usr;

IF var_usr_id IS NULL THEN
RETURN FALSE;
ELSE
SELECT TBL_USERS.USR_POINTS
INTO var_points
FROM TBL_USERS
WHERE USR_ID = var_usr_id;

var_points := var_points + 5;

UPDATE TBL_USERS
SET TBL_USERS.USR_POINTS = var_points
WHERE TBL_USERS.USR_ID = var_usr_id;

INSERT INTO TBL_LOGIN_LOG(USR_ID,LOG_TIME, LOG_VALID)
VALUES(var_usr_id, var_date, 'Y');

RETURN TRUE;
END IF;

EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN FALSE;
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
RETURN FALSE;
END FUN_AUTHORIZE;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值