2014-02-23 1 views
0

Que 구조를 사용하여 고객의 여신 한도를 표시하는 프로그램을 작성하십시오. 사용자는 고객 ID를 입력해야합니다. 신용 한도에 따라 다음 메시지 중 하나가 표시되어야합니다. 여신 한도가 $ 4500 이상인 직원의 경우 마지막 메시지가 표시됩니다.pl/sql 제어 구조 오류가 발생했습니다.

무엇을이 코드에 문제가 있습니다가 초기화 또는 쿼리 두 번째 문제의 v_emp_id의 값으로 할당되지 않은 v_creditlimit 시작하는

 declare   
v_emp_id employees.employee_id%type;   
    v_cust_num customers.customers#%type;  
     v_creditlimit customers.creditlimit%type;    

     begin 
     select employee_id ,customer# into v_emp_id ,  
     v_cust_num from employees natural join customers  
     where v_emp_id = '&v_emp_id';    

    if v_creditlimit < 1000 then  
    dbms_output.put_line ('credit limit less than 1000');   
     elseif v_creditlimit< 2000 then  
     dbms_output.put_line ('credit limit less than 2000');   
      elseif v_creditlimit< 3000 then  
      dbms_output.put_line ('credit limit less than 3000');   
     elseif v_creditlimit< 4000 then   
     dbms_output.put_line ('credit limit less than 4000');  
     elseif v_creditlimit< 6000 then  
     dbms_output.put_line ('credit limit less than 6000');    
     end if;  
    end;   
    /    
+0

아래 코드를 시도? – Incognito

+2

'NATURAL JOIN'을 사용하지 마십시오. 당신을 후원하는 사람들 (또는 당신을 도우려는 사람들)에게 쉽게하고 합류 기준을 명확하게 지정하십시오. 감사. –

답변

0

우선을 회신 해 주시기 바랍니다 당신이 선언 된 변수이고 당신은 테이블

위한 필드로 사용하면 오류가 당신이 얻고있는 무엇

create table customers1 (customers# int,creditlimit int,employee_id int); 

select * from customers1; 

begin 
insert into customers1 values(11,123,1); 
insert into customers1 values(12,345,2); 
commit; 
end; 
-------------------------------------------------------------------------------------- 
create table employees(employee_id int, first_name varchar2(20), last_name varchar2(20)); 

select * from employees; 

begin 
insert into employees values(1,'a','b'); 
insert into employees values(2,'c','d'); 
insert into employees values(3,'e','f'); 
commit; 
end; 
-------------------------------------------------------------------------------------- 
DECLARE 
    v_emp_id employees.employee_id%type; 
    v_cust_num customers1.customers#%type; 
    v_creditlimit customers1.creditlimit%type; 
BEGIN 

    dbms_output.put_line('Enter the employee id.'); 
    v_emp_id := &emp_id; 

    SELECT customers# INTO v_cust_num 
    FROM employees NATURAL JOIN customers1 WHERE employee_id = v_emp_id; 

    SELECT creditlimit into v_creditlimit 
    FROM employees NATURAL JOIN customers1 WHERE employee_id = v_emp_id; 

dbms_output.put_line(v_cust_num); 
dbms_output.put_line(v_creditlimit); 

    IF v_creditlimit < 1000 THEN 
    dbms_output.put_line ('credit limit less than 1000'); 
    elsif v_creditlimit BETWEEN 1001 and 2000 THEN 
    dbms_output.put_line ('credit limit BETWEEN 1001 and 2000'); 
    elsif v_creditlimit BETWEEN 2001 and 3000 THEN 
    dbms_output.put_line ('credit limit BETWEEN 2001 and 3000'); 
    elsif v_creditlimit BETWEEN 3001 and 4000 THEN 
    dbms_output.put_line ('credit limit BETWEEN 3001 and 4000'); 
    elsif v_creditlimit BETWEEN 5001 and 6000 THEN 
    dbms_output.put_line ('credit limit BETWEEN 5001 and 6000'); 
    END IF; 

END; 
관련 문제