title: PLS-00394: Wrong number of values in the INTO list of a fetch statement
body: <p>This is my attempt in creating a cursor in a stored procedure</p>
  
  <pre><code>   --Second Stored Procedure--
   CREATE OR REPLACE PROCEDURE sp_GetDiscountedRate (DiscountCode IN    
  VARCHAR2,Percentage IN NUMBER, ReserveDate IN DATE)
   IS  --Code declaration section--
  --variables to store column values returned from select into
   pPassengerID            VARCHAR2(10);
   pFirst                  VARCHAR2(20);
   pMiddle                 VARCHAR2(20);
   pLast                   VARCHAR2(20);
   pPassengerType          CHAR (1);
   uUSMilitaryID           VARCHAR (8);
   uMilitaryBranch         VARCHAR2 (20);
   uMilitaryDiscountCode   VARCHAR2(8);
   rFlightNumber           VARCHAR2(6);
   rReservationCost        NUMBER(6);
   rReservationDate        DATE;
   --Declare Cursor
              CURSOR cur_USMilitary IS
              --Query cursor will point to results 
    SELECT P.PassengerID, P.First, P.Middle, P.Last, P.PassengerType,    
    U.USMilitaryID, U.MilitaryBranch,   
    U.MilitaryDiscountCode, R.FlightNumber, R.ReservationCost,   
    R.ReservationDate,
    CASE U.MilitaryDiscountCode WHEN DiscountCode THEN   
    Percentage*R.ReservationCost 
    ELSE R.ReservationCost END "REVISED_RESERVATION_COST"
    FROM PASSENGER P, US_Military U, RESERVATION R
    WHERE P.PassengerID = U.MPassengerID
    AND P.PassengerID = R.PassengerID
    AND U.MilitaryDiscountCode = DiscountCode
    AND R.ReservationDate = ReserveDate;
  
         --Start Execution section--
  BEGIN 
        --Open Cursor
       OPEN cur_USMilitary; --  open cursor for use   
       --loop to display each record returned by cursor 
       --Use PL/SQL language control or loop to display each record pointed by cursor 
      LOOP
          --Fetch cursor data
          FETCH cur_USMilitary INTO pPassengerID,  
         pFirst,pMiddle,pLast,pPassengerType,
  
  uUSMilitaryID,uMilitaryBranch,uMilitaryDiscountCode,rFlightNumber,
  rReservationCost,rReservationDate;
          EXIT WHEN cur_USMilitary%NOTFOUND;
          --Display each record
          --Displaying the results
  DBMS_OUTPUT.PUT_LINE ('CUSTOMER INFORMATION: ');
  DBMS_OUTPUT.PUT_LINE ('The PassengerID is:  ' ||pPassengerID);
  DBMS_OUTPUT.PUT_LINE ('First Name of passenger is:  ' ||pFirst);
  DBMS_OUTPUT.PUT_LINE ('Middle Name of passenger is:  ' ||pMiddle);
  DBMS_OUTPUT.PUT_LINE ('Last Name of passenger is:  ' ||pLast);
  DBMS_OUTPUT.PUT_LINE ('Passenger Type of customer is: ' ||pPassengerType);
  DBMS_OUTPUT.PUT_LINE ('US Military ID of Passenger is:  ' ||uUSMilitaryID);
  DBMS_OUTPUT.PUT_LINE ('Military Branch of passenger is:  ' ||uMilitaryBranch);
  DBMS_OUTPUT.PUT_LINE ('Military Discount code of passenger is:  ' ||uMilitaryDiscountCode);
  DBMS_OUTPUT.PUT_LINE ('Flight number of passenger is:  ' ||rFlightNumber);
  DBMS_OUTPUT.PUT_LINE ('Reservation Cost of passenger is:  ' ||rReservationCost);
  DBMS_OUTPUT.PUT_LINE ('Reservation Date of passenger is:  ' ||rReservationDate);
  
  END LOOP; 
  
  
  
      CLOSE cur_USMilitary; --close cursor
  
   END sp_GetDiscountedRate;
  </code></pre>
  
  <p>I get this error: </p>
  
  <pre><code>Error(36,9): PL/SQL: SQL Statement ignored
  Error(36,9): PLS-00394: wrong number of values in the INTO list of a FETCH statement
  </code></pre>
  
  <p>I fully understand the error. I checked the number of columns and it looks like to me that they match the number of columns within the query. I've also checked the datatypes to make sure it was correct. </p>