用户登录实现

参考博文:

01 技术太卷我学APEX-定制验证方案_白龙马5217的博客-CSDN博客icon-default.png?t=N6B9https://blog.csdn.net/html5builder/article/details/128662070

创建函数

用户登录实现_第1张图片

 添加参数

用户登录实现_第2张图片

 函数

create or replace function "F_LOGIN"
(p_username in VARCHAR2,
 p_password in varchar2)
return boolean
is
    b_ret boolean :=false;
    c_1 number;
begin
    select count(1) into c_1 from user_test_wxx2 
        where username = p_username and password = p_password;
    if (c_1 = 1) then 
        b_ret := true;
    else
        b_ret := false;
    end if;   

    return b_ret;
   
    exception when others then
        return false; 
end;

【错误记录】PLS-00103: 出现符号 "CREATE"在需要下列之一时:

编译失败

用户登录实现_第3张图片

 编译失败, 行 6 (19:07:16)
PLS-00103: 出现符号 "CREATE"在需要下列之一时: begin function pragma procedure subtype type current cursor delete exists prior external language

开始 函数杂注过程子类型类型<标识符> <双引号分隔标识符>当前游标删除 存在先前的外部语言

检查了一下因为重复创建函数“F_LOGIN”,去掉多余的

create or replace function "F_LOGIN"
(p_username in VARCHAR2,
 p_password in varchar2)
return boolean
is
    b_ret boolean :=false;
    c_1 number;
begin
    select count(1) into c_1 from user_test_wxx2 
        where name = p_username and password = p_password;
    if (c_1 = 1) then 
        b_ret := true;
    else
        b_ret := false;
    end if;   
    return b_ret;
   
    exception when others then
        return false; 
end;

注意!!

函数中的项要与创建的表中的项对应,否则编译失败

用户登录实现_第4张图片

 转到 【SQL工作室】-【SQL命令】验证一下F_LOGIN函数。

用户登录实现_第5张图片

成功查询!

begin
    if(F_LOGIN('user','123456')) then
        htp.p('True');
    else
        htp.p('False');
    end if;
end;

创建一个验证方案【账号密码】

APEX原有验证方案【Oracle APEX 帐户】

用户登录实现_第6张图片

 方案名可以随便起,我取的是“logon”。

方案类型:定制;验证函数就是刚刚创建的数据库函数 F_LOGIN

用户登录实现_第7张图片

 

设置授权方案

设置入库有2个地方,1是【共享主键】-【安全性】-【安全属性】,2是【应用程序定义】-【安全性】-【授权】用户登录实现_第8张图片

登录页面设置 

登录页面初始设置用户登录实现_第9张图片

 需要做的操作

用户登录实现_第10张图片

 APEX 默认的登录是把账号都转大写了,所以要设置这里。

apex_authentication.login(
    p_username => :P9999_USERNAME,
    p_password => :P9999_PASSWORD,
    p_uppercase_username => false);

登录试试

成功啦!

用户登录实现_第11张图片

 

你可能感兴趣的:(PL/SQL,oracle,apex,oracle,apex,pl/sql)