如何在Oracle Forms Builder登录表单中调用警报消息?

如何在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;

我在OracleFormsBuilder11g中成功创建了登录表单

当用户输入无效的用户名或密码时,我创建了警报消息

按下登录按钮时的我的代码:

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我在没有找到数据的情况下尝试过,但在底部显示错误,我想显示一条错误对话框消息