如何在Oracle Forms Builder登录表单中调用警报消息?
我在OracleFormsBuilder11g中成功创建了登录表单 当用户输入无效的用户名或密码时,我创建了警报消息 按下登录按钮时的我的代码:如何在Oracle Forms Builder登录表单中调用警报消息?,oracle,oracle11g,oracle10g,oracleforms,Oracle,Oracle11g,Oracle10g,Oracleforms,我在OracleFormsBuilder11g中成功创建了登录表单 当用户输入无效的用户名或密码时,我创建了警报消息 按下登录按钮时的我的代码: DECLARE v_login VARCHAR2(300); BEGIN SELECT 'x' INTO v_login FROM users WHERE user_name = :login.user_name AND password = :login.password;
DECLARE
v_login VARCHAR2(300);
BEGIN
SELECT 'x'
INTO v_login
FROM users
WHERE user_name = :login.user_name
AND password = :login.password;
IF SQL%FOUND THEN
OPEN_FORM ('');
END IF;
END;
如何在此代码中调用警报消息?最简单的方法是连续调用内置的
消息两次。为什么?因为第一个窗口在状态栏中显示消息,但是第二个窗口将强制打开一个弹出窗口,因此更可见
例如:
declare
v_login varchar2(1);
begin
select max('x') --> MAX to avoid no_data_found
into v_login
from users
where user_name = :login.user_name
and password = :login.password;
if v_login is null then
message('Invalid credentials'); --> call MESSAGE twice
message('Invalid credentials');
else
open_form('');
end if;
end;
p.S.Barbaros编辑了我的代码,删除了第二次通话中的信息文本:
message('Invalid credentials'); --> call MESSAGE twice
message('');
嗯,这是错误的(至少在我使用的表单版本中)。您必须在这两个语句中使用消息文本,否则它将无法按预期工作。因此,我恢复了您的更改。您是否应该处理未找到的异常选择进入?您正在存储纯文本密码吗?如果您至少对它们进行哈希运算,可能会更安全。@William Robertson我在没有找到数据的情况下尝试过,但在底部显示错误,我想显示一条错误对话框消息