Bird
Raised Fist0
MySQLquery~5 mins

Procedure parameters (IN, OUT, INOUT) in MySQL - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the IN parameter type mean in a MySQL stored procedure?
IN parameters are used to pass values into the procedure. They are read-only inside the procedure and cannot be changed.
Click to reveal answer
beginner
What is the purpose of an OUT parameter in a MySQL stored procedure?
OUT parameters are used to return values from the procedure back to the caller. They can be assigned new values inside the procedure.
Click to reveal answer
intermediate
Explain the INOUT parameter type in MySQL stored procedures.
INOUT parameters allow passing a value into the procedure and also returning a modified value back to the caller. They can be read and changed inside the procedure.
Click to reveal answer
beginner
How do you declare an OUT parameter in a MySQL stored procedure?
You declare it by specifying OUT before the parameter name and its data type, for example: OUT param_name INT.
Click to reveal answer
beginner
Can IN parameters be modified inside a MySQL stored procedure?
No, IN parameters are read-only inside the procedure and cannot be changed.
Click to reveal answer
Which parameter type allows you to pass a value into a MySQL procedure and get a modified value back?
AIN
BINOUT
CRETURN
DOUT
What happens if you try to change an IN parameter inside a MySQL procedure?
AThe value changes and is returned
BAn error occurs
CThe change is ignored; IN parameters are read-only
DThe procedure stops running
How do you specify an OUT parameter in a MySQL procedure declaration?
ABy writing IN before the parameter name
BBy writing RETURN before the parameter name
CBy writing INOUT before the parameter name
DBy writing OUT before the parameter name
Which parameter type cannot return a value back to the caller?
AIN
BOUT
CINOUT
DALL can return values
If you want to get a result from a procedure using parameters, which type should you use?
AOUT
BIN
CINOUT
DNone, use SELECT only
Describe the differences between IN, OUT, and INOUT parameters in MySQL stored procedures.
Think about how data flows between caller and procedure.
You got /3 concepts.
    How would you use an OUT parameter to get a value from a MySQL stored procedure?
    Consider the steps to send data back from procedure to caller.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does the IN parameter type in a MySQL stored procedure do?
      easy
      A. It declares a variable inside the procedure without passing values.
      B. It passes a value into the procedure but does not allow changes to be sent back.
      C. It allows both passing a value in and sending a changed value back.
      D. It allows the procedure to send a value back to the caller only.

      Solution

      1. Step 1: Understand the role of IN parameters

        IN parameters are used to pass values into a procedure. They act like input-only variables.
      2. Step 2: Clarify output behavior of IN parameters

        Changes to IN parameters inside the procedure do not affect the caller's variables; they are input-only.
      3. Final Answer:

        It passes a value into the procedure but does not allow changes to be sent back. -> Option B
      4. Quick Check:

        IN = input only [OK]
      Hint: IN means input only, no output changes sent back [OK]
      Common Mistakes:
      • Thinking IN parameters can send data back
      • Confusing IN with OUT or INOUT
      • Assuming IN parameters can be modified outside
      2. Which of the following is the correct syntax to declare an OUT parameter in a MySQL stored procedure?
      easy
      A. CREATE PROCEDURE myProc(param OUT INT) BEGIN END;
      B. CREATE PROCEDURE myProc(INOUT param INT) BEGIN END;
      C. CREATE PROCEDURE myProc(OUT param INT) BEGIN END;
      D. CREATE PROCEDURE myProc(param INT OUT) BEGIN END;

      Solution

      1. Step 1: Recall correct parameter declaration order

        In MySQL, the parameter mode (IN, OUT, INOUT) comes before the parameter name and type.
      2. Step 2: Check each option's syntax

        CREATE PROCEDURE myProc(OUT param INT) BEGIN END; uses 'OUT param INT' which is correct. Placing OUT after the parameter name or type is invalid syntax.
      3. Final Answer:

        CREATE PROCEDURE myProc(OUT param INT) BEGIN END; -> Option C
      4. Quick Check:

        Parameter mode before name and type [OK]
      Hint: Parameter mode (IN/OUT/INOUT) always comes first [OK]
      Common Mistakes:
      • Placing OUT after parameter name or type
      • Mixing parameter mode with data type
      • Omitting BEGIN and END block
      3. Consider this procedure call and definition:
      CREATE PROCEDURE addValues(IN a INT, INOUT b INT, OUT c INT)
      BEGIN
        SET b = b + a;
        SET c = a + b;
      END;
      
      CALL addValues(5, @varB, @varC);

      If @varB is initially 10, what will be the values of @varB and @varC after the call?
      medium
      A. @varB = 15, @varC = 20
      B. @varB = 10, @varC = 15
      C. @varB = 5, @varC = 10
      D. @varB = 15, @varC = 10

      Solution

      1. Step 1: Understand parameter roles and initial values

        a = 5 (IN), b = 10 (INOUT), c is OUT (initially NULL). INOUT means b can be read and updated.
      2. Step 2: Calculate new values inside procedure

        SET b = b + a = 10 + 5 = 15; SET c = a + b = 5 + 15 = 20.
      3. Final Answer:

        @varB = 15, @varC = 20 -> Option A
      4. Quick Check:

        INOUT b updated, OUT c set correctly [OK]
      Hint: INOUT changes persist; OUT must be set inside procedure [OK]
      Common Mistakes:
      • Assuming INOUT parameter does not change
      • Confusing OUT parameter initial value
      • Ignoring that OUT must be assigned inside procedure
      4. Given this procedure:
      CREATE PROCEDURE testProc(INOUT x INT)
      BEGIN
        SET x = x + 1;
      END;

      Which of the following calls will cause an error?
      medium
      A. CALL testProc(@varX); -- @varX is a session variable
      B. CALL testProc(NULL);
      C. SET @varX = 10; CALL testProc(@varX);
      D. CALL testProc(5);

      Solution

      1. Step 1: Understand INOUT parameter requirements

        INOUT parameters require a variable to pass by reference, so the procedure can read and modify it.
      2. Step 2: Analyze each call

        CALL testProc(5); passes a literal (5), which is not a variable, causing an error. The other options pass variables or NULL variables, which are allowed.
      3. Final Answer:

        CALL testProc(5); -> Option D
      4. Quick Check:

        INOUT needs variable, not literal [OK]
      Hint: INOUT requires variable, not constant literal [OK]
      Common Mistakes:
      • Passing literals to INOUT parameters
      • Confusing INOUT with IN parameters
      • Assuming NULL literal is invalid for INOUT
      5. You want to create a procedure that takes two numbers, adds them, and returns the sum and the product. Which parameter types should you use for the inputs and outputs?
      hard
      A. IN for both inputs, OUT for sum and product outputs
      B. INOUT for inputs, IN for outputs
      C. OUT for inputs, IN for outputs
      D. IN for inputs, INOUT for outputs

      Solution

      1. Step 1: Identify input and output roles

        The two numbers are inputs only, so they should be IN parameters. The sum and product are results to send back, so they should be OUT parameters.
      2. Step 2: Match parameter types to roles

        IN parameters accept input values; OUT parameters return output values. INOUT is for parameters used as both input and output, which is not needed here.
      3. Final Answer:

        IN for both inputs, OUT for sum and product outputs -> Option A
      4. Quick Check:

        Inputs = IN, Outputs = OUT [OK]
      Hint: Use IN for inputs, OUT for outputs to separate roles clearly [OK]
      Common Mistakes:
      • Using INOUT unnecessarily for outputs
      • Confusing OUT as input
      • Using IN for output parameters
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard