我从数据库接收用户输入。当用户输入不在数据库中的无效名称时,我试图收到一条错误消息,指出输入不在数据库中。我无法弄清楚v_employee_name之后的内容。任何帮助都会很棒。谢谢!
ACCEPT p_1 PROMPT 'Please enter the employee Name'
DECLARE
v_employee_name VARCHAR2(40) :='&p_1';
(Declared Cursors)
BEGIN
if v_employee_name (???????) then
DBMS_OUTPUT.PUT_LINE('The employee is not in the database' || UPPER(v_employee_name));
else
...........
答案 0 :(得分:3)
您不能指望数据库像魔术一样验证用户的输入。因为数据库并不神奇。所以你需要做的是写一个查询。我知道,令人震惊。
ACCEPT p_1 PROMPT 'Please enter the employee Name'
DECLARE
v_employee_id employees.emp_id%type;
(Declared Cursors)
BEGIN
begin
select emp_id into v_employee_id
from employees
where employee_name = upper('&p_1');
-- do something
....
exception
when no_data_found then
raise_application_error(-20000, 'The employee is not in the database' || UPPER(v_employee_name));
end;
....
顺便说一下,如果你要在输出中大写这个名字,你应该在进行验证时大写,因为在测试相等性时情况很重要。