2017-12-03 2 views
-1

Ich versuche, diese Schritte zu tun: 1. Benutzer für drei Eingaben, course_no, Abfahrt und Registrierung fragen. 2. Überprüfen Sie, ob in meiner Abteiltabelle die Option Abfahrt gefunden wurde. 3. Wenn es gefunden wird, prüfen Sie, ob ein verfügbares Zimmer die Bedingung erfüllt. Wenn nicht, Nachricht drucken.Random Prompt erscheint bei der Ausführung von Code, der nirgendwo in meinem Code gefunden wird

Hier ist mein Code:

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

Allerdings, wenn ich dies ausführen, es fragt mich, für course_no, Abteilungsnamen und Einschreibung, fordert es mich dann mit diesem:

Enter value for enrollmen: 

I habe diese Eingabeaufforderung nicht einmal in meinem Code. Woher kommt es?

Antwort

2

Nun, Sie haben das tatsächlich in Ihrem Code. Aber um das zu sehen, müssen Sie Substitutionsvariablen verstehen. Siehe PLSQL 101 Substitution vs bind variables. In diesem speziellen Fall die Eingabeaufforderung tatsächlich existiert zweimal:

"select count (*) in availableRooms von Räumen, in denen Kapazität>& Einschreibung"

und wieder bei

"... aus Zimmer wo Kapazität>& Eintragung ... "

Verwandte Themen