2

嘿,我想知道如果if在 PL/SQL 中触发语句,是否可以接收第二个输入?这是我现在拥有的代码:

set serveroutput on
accept v_enter prompt "Enter employees salary: "
declare 
  v_emppay number(10,0):='&v_enter';
  v_numemps number (3,0):='&v_enter2';
  v_jobsec varchar2(40);
  v_jobname emp.job%type;
begin
  select job into v_jobname
  from emp
  where ename = 'ADAMS';

  if v_emppay > 2000 and v_jobname = 'PRESIDENT' then
     v_jobsec := 'Safe';
     elsif
      v_emppay > 2000 and v_jobname <> 'MANAGER' then
      v_jobsec := 'Not Safe';
      elsif
        v_emppay > 2000 and v_jobname = 'MANAGER' then
          accept v_enter2 prompt "How many underlings? "
          if v_numemps < 3 then
            v_jobsec := 'Not Safe'
          else
            v_jobsec := 'Safe'
          end if   
        elsif 
        v_emppay > 1000 and v_jobname <> 'MANAGER' then
        v_jobsec := 'Safe';
        else
          v_jobsec := 'Safe';
  end if;

  dbms_output.put_line ('You are '||v_jobsec);
end;

截至目前,我被要求插入(没有提示)一个值,无论该人是否是经理,如果他是经理,则程序会出错。这是我使用 PL/SQL 的第二天,所以我确定我的某些语法是错误的,但截至目前我看不出在哪里。提前致谢。

4

1 回答 1

-1

据我了解,您需要询问某人是否是经理,然后他是否只是设置输出消息他是?我对么?所以你只需要一个 IF 和异常......这就是我将如何做......简单

set serveroutput on
accept v_enter prompt "Enter employees salary: "
declare 
  v_emppay number(10,0):='&v_enter';
  v_numemps number (3,0):='&v_enter2';
  v_jobsec varchar2(40);
  v_jobname emp.job%type;
  e_exit exception;
begin
  select job into v_jobname
  from emp
  where ename = 'ADAMS';

  if v_jobname = 'MANAGER' then
     raise e_exit;
  end if;

  if v_emppay > 2000 and v_jobname = 'PRESIDENT' then
     v_jobsec := 'Safe';
     elsif
      v_emppay > 2000 and v_jobname <> 'MANAGER' then
      v_jobsec := 'Not Safe';
      elsif
        v_emppay > 2000 and v_jobname = 'MANAGER' then
          accept v_enter2 prompt "How many underlings? "
          if v_numemps < 3 then
            v_jobsec := 'Not Safe'
          else
            v_jobsec := 'Safe'
          end if   
        elsif 
        v_emppay > 1000 and v_jobname <> 'MANAGER' then
        v_jobsec := 'Safe';
        else
          v_jobsec := 'Safe';
  end if;

  dbms_output.put_line ('You are '||v_jobsec);
  exception
     when e_exit then
       dbms_output.put_line ('You are manager');
end;
于 2013-06-07T10:16:44.730 回答