oracle - 如何为登录表单使用动态警报?
问题描述
我是使用 oracle 10g Forms 进行 Oracle 开发的新手。
我正在尝试为登录目的编写此代码。当用户输入错误的密码时,它会在弹出窗口中发出警告。此外,当用户输入错误的用户名时,它会发出警报。
我写了这段代码,但我无法更正它。
DECLARE
un VARCHAR (15);
pwd VARCHAR (15);
BEGIN
--- Dynamic altert properties code start--
SET_ALERT_PROPERTY ('LOGIN_ALERTS', TITLE, 'Security Altert');
SET_ALERT_PROPERTY ('LOGIN_ALERTS',
ALERT_MESSAGE_TEXT,
'Wrong Username?');
SET_ALERT_PROPERTY ('LOGIN_ALERTS',
ALERT_MESSAGE_TEXT,
'Wrong Password?');
SELECT username, users_password
INTO un, pwd
FROM MENU_USERS
WHERE username = :TXT_USERNAME;
IF un = :TXT_USERNAME
THEN
IF pwd = :TXT_PWD
THEN
CALL_FORM ('F:\ISMS\INV\inv_stock.fmx');
ELSE
SHOW_ALERT ('LOGIN_ALERTS');
END IF;
ELSE
SHOW_ALERT ('LOGIN_ALERTS');
END IF;
END;
解决方案
警报是可以的,但是 - 连续message
呼叫也可以。这个例子展示了如何使用这种方法。
您编写的代码有点“错误”,因为它无法处理“用户名错误”的情况。发生这种情况时,select
不会返回任何内容,并且会引发no_data_found
应处理的异常。
干得好:
declare
pwd varchar2(15);
begin
select users_password
into pwd
from menu_users
where username = :txt_username;
-- if TXT_USERNAME value exists, SELECT will return its password
if pwd = :txt_pwd then
call_form('whichever form you want');
else
message('Wrong password');
message('Wrong password');
raise form_trigger_failure;
end if;
exception
when no_data_found then
-- SELECT didn't return anything, but raised an exception
message('Wrong username');
message('Wrong username');
end;
推荐阅读
- regex - 如何排除部分正则表达式匹配?
- c# - 为什么我在 TextChanged 事件中运行相同的代码而不是 Button Click 时会得到不同的结果?
- reactjs - 无法在 Storybook 中按类名设置我的 React 组件样式
- marklogic - 使用 ml-gradle 对 REST API 选项的权限
- c - 读取访问中断:树为 0xAE0A74BF
- node.js - 浏览 Docker 托管的应用程序时出现 ERR_CONNECTION_REFUSED
- r - 不同年份的滚动计数
- python - 在 linux 的 windows 子系统上运行时的 time.clock() 精确规范
- c++ - 我的代码仅适用于一个输入。请指教
- java - Android 在 Cordova 插件中使用自定义依赖项?