-1

我正在从数据库中获取用户输入。当用户输入不在数据库中的无效名称时,我试图收到一条错误消息,指出输入不在数据库中。我无法弄清楚 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  
     ...........
4

1 回答 1

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;  
   ....

顺便说一句,如果您要在输出中大写名称,则在进行验证时可能应该大写,因为在测试相等性时大小写很重要。

于 2013-05-09T21:14:23.267 回答