逻辑如下:
如用户名不存在,返回”用户名不存在”
如用户名存在,密码错误,返回”密码错误”
如用户名、密码都正确,但是级别不够,管理员是A,一般用户是U,那么返回”级别不够”
正常登录,返回”成功登陆”
我写了存储过程,在.NET中调用,存储过程编译通过,但是在程序使用时间是不能实现效果,请各位帮看下存储过程:
(调用界面就是用户名、密码,然后按登录按钮)
create or replace procedure PRC_STAT_LOGIN
IS
v_username users.username%TYPE;
v_password USERS.PASSWORD%TYPE;
v_userlevel USERS.USER_LEVEL%TYPE;begin
--声明游标 查询出每个每个用户的信息
declare cursor cursor_login is select * from users ;
--cursor cursor_name is select username from users;
begin
if not cursor_login%isopen then
open cursor_login;
end if;
loop
FETCH cursor_login INTO v_username,v_password,v_userlevel;
EXIT WHEN cursor_login%NOTFOUND;
--正常登录,返回”成功登陆”
DBMS_OUTPUT.PUT_LINE('Login successfully!');
IF v_username is NULL THEN--如用户名不存在,返回”用户名不存在”
DBMS_OUTPUT.put_line('The user is not existed!');
ELSE
IF v_userlevel = 'U' THEN--如用户名、密码都正确,但是级别不够,管理员是A,一般用户是U,那么返回”级别不够”
DBMS_OUTPUT.put_line('Low level!') ;
END IF;
end if;
end loop;
exception
when NO_DATA_FOUND THEN
DBMS_OUTPUT.put_line('No data found!');
when LOGIN_DENIED THEN --如用户名存在,密码错误,返回”密码错误”
DBMS_OUTPUT.PUT_LINE('PASSWORD ERROR');
close cursor_login;
end;
end PRC_STAT_LOGIN;
如用户名不存在,返回”用户名不存在”
如用户名存在,密码错误,返回”密码错误”
如用户名、密码都正确,但是级别不够,管理员是A,一般用户是U,那么返回”级别不够”
正常登录,返回”成功登陆”
我写了存储过程,在.NET中调用,存储过程编译通过,但是在程序使用时间是不能实现效果,请各位帮看下存储过程:
(调用界面就是用户名、密码,然后按登录按钮)
create or replace procedure PRC_STAT_LOGIN
IS
v_username users.username%TYPE;
v_password USERS.PASSWORD%TYPE;
v_userlevel USERS.USER_LEVEL%TYPE;begin
--声明游标 查询出每个每个用户的信息
declare cursor cursor_login is select * from users ;
--cursor cursor_name is select username from users;
begin
if not cursor_login%isopen then
open cursor_login;
end if;
loop
FETCH cursor_login INTO v_username,v_password,v_userlevel;
EXIT WHEN cursor_login%NOTFOUND;
--正常登录,返回”成功登陆”
DBMS_OUTPUT.PUT_LINE('Login successfully!');
IF v_username is NULL THEN--如用户名不存在,返回”用户名不存在”
DBMS_OUTPUT.put_line('The user is not existed!');
ELSE
IF v_userlevel = 'U' THEN--如用户名、密码都正确,但是级别不够,管理员是A,一般用户是U,那么返回”级别不够”
DBMS_OUTPUT.put_line('Low level!') ;
END IF;
end if;
end loop;
exception
when NO_DATA_FOUND THEN
DBMS_OUTPUT.put_line('No data found!');
when LOGIN_DENIED THEN --如用户名存在,密码错误,返回”密码错误”
DBMS_OUTPUT.PUT_LINE('PASSWORD ERROR');
close cursor_login;
end;
end PRC_STAT_LOGIN;
所以可以不用游标
select count(*) into num from users where username=xxx;
如果num大于0再往下判断
FUNCTION cfpath (v_username in varchar2,
v_password in varchar2,
v_userlevel in varchar2)
RETURN VARCHAR2 IS
BEGIN
--声明游标 查询出每个每个用户的信息
declare cursor cursor_login is select * from users ;
--cursor cursor_name is select username from users;
begin
if not cursor_login%isopen then
open cursor_login;
end if;
loop
FETCH cursor_login INTO v_username,v_password,v_userlevel;
EXIT WHEN cursor_login%NOTFOUND;
--正常登录,返回”成功登陆”
return 'Login successfully!';
IF v_username is NULL THEN--如用户名不存在,返回”用户名不存在”
return 'The user is not existed!';
ELSE
IF v_userlevel = 'U' THEN--如用户名、密码都正确,但是级别不够,管理员是A,一般用户是U,那么返回”级别不够”
return 'Low level!';
END IF;
end if;
end loop;
exception
when NO_DATA_FOUND THEN
return 'No data found!';
when LOGIN_DENIED THEN --如用户名存在,密码错误,返回”密码错误”
return'PASSWORD ERROR';
close cursor_login;
end;
END;