2017-12-03 3 views
-1

다음 단계를 수행하려고합니다. 1. course_no, depart, and enrollment의 세 가지 입력을 사용자에게 묻습니다. 2. departments가 내 부서 테이블에 있는지 확인하십시오. 3. 발견 된 경우 조건을 충족하는 사용 가능한 방을 확인하십시오. 그렇지 않으면 메시지를 인쇄하십시오. 나는이 프로그램을 실행할 때, 그 다음이 나에게 묻습니다, course_no, 부서 이름 및 등록 나에게 묻는다, 그러나임의 코드 내 어디에도없는 코드를 실행할 때 나타나는 임의 메시지

ACCEPT course_no number PROMPT "Enter course_no: "; 
ACCEPT depart PROMPT "Enter Department name: "; 
ACCEPT Enrollment number PROMPT "Enter Enrollment: "; 

DECLARE 
deptFound number; 
availableRooms number; 
roomNumber number; 

BEGIN 
select case 
       when exists (select 1 from dept where code = '&depart') 
       then 1 
       else 0 
      end as d_exist 
     into deptFound 
from dual; 

if deptFound = 1 then 
     select count(*) into availableRooms from rooms where capacity > &enrollment; 
     if availableRooms > 0 then 
       select room_no into roomNumber from rooms r where capacity = (select min(capacity) from rooms where capacity > &enrollmen) and rownum = 1; 


     else 
       DBMS_OUTPUT.PUT_LINE('No available rooms!'); 
     end if; 
    end if; 


END; 
/

:

Enter value for enrollmen: 

I를 여기

내 코드입니다 심지어 내 코드에서 그 프롬프트가 없어. 이것은 어디서 오는 거니??

답변

2

글쎄, 실제로 코드에서 그렇게 할 수 있습니다. 그러나 그것을 보려면 대체 변수를 이해해야합니다. PLSQL 101 Substitution vs bind variables을 참조하십시오. 메시지가 실제로에서 두 번있는이 특별한 경우 :

"객실에서 availableRooms에 SELECT COUNT (*) 여기서 용량>& 등록" "

에서 다시

과 ... 객실에서 수용량>& 등록 ... "