CREATE OR REPLACE PROCEDURE cp_da_logout(
i_voperator IN VARCHAR2 , --登陆用户
i_vworkstationip IN VARCHAR2 , --登陆IP
o_sretval IN OUT NUMBER)
ASt_vloginstatus VARCHAR2(1);
t_vlogintype VARCHAR2(1);
t_dnow DATE;
/*****
判断一个帐号在同一时间是否只有一个实例
返回0表示OK,非零则失败
******/
BEGIN
t_vlogintype := 'W';--登陆类型都定为W
t_vloginstatus := '0'; --0表示退出
t_dnow := SYSDATE;
--更新数据 BEGIN
insert into workstationrecordd
select * from workstationrecord
where wsip = i_vworkstationip
AND operator = i_voperator
AND logintype = t_vlogintype; delete workstationrecord
where wsip = i_vworkstationip
AND operator = i_voperator
AND logintype = t_vlogintype;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
NULL;
END; o_sretval := 0;END ;
(先插后删,最后有赋值语句o_sretval := 0; 那不就总是返回0 啊 看不懂,请高手指点)
i_voperator IN VARCHAR2 , --登陆用户
i_vworkstationip IN VARCHAR2 , --登陆IP
o_sretval IN OUT NUMBER)
ASt_vloginstatus VARCHAR2(1);
t_vlogintype VARCHAR2(1);
t_dnow DATE;
/*****
判断一个帐号在同一时间是否只有一个实例
返回0表示OK,非零则失败
******/
BEGIN
t_vlogintype := 'W';--登陆类型都定为W
t_vloginstatus := '0'; --0表示退出
t_dnow := SYSDATE;
--更新数据 BEGIN
insert into workstationrecordd
select * from workstationrecord
where wsip = i_vworkstationip
AND operator = i_voperator
AND logintype = t_vlogintype; delete workstationrecord
where wsip = i_vworkstationip
AND operator = i_voperator
AND logintype = t_vlogintype;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
NULL;
END; o_sretval := 0;END ;
(先插后删,最后有赋值语句o_sretval := 0; 那不就总是返回0 啊 看不懂,请高手指点)
insert into workstationrecordd
delete workstationrecord
只是个过程处理吧~~~