PL / SQL:IF ELSE语句并使用来自用户输入的无效字符串

时间:2013-05-09 20:56:14

标签: sql database oracle plsql

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

1 个答案:

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

顺便说一下,如果你要在输出中大写这个名字,你应该在进行验证时大写,因为在测试相等性时情况很重要。