Bird
Raised Fist0
SQLquery~20 mins

Function vs procedure decision in SQL - Practice Questions

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Function vs Procedure Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
When to use a function instead of a procedure?
Which scenario best fits the use of a SQL function rather than a procedure?
AYou want to run a batch job that sends emails and logs results.
BYou want to perform multiple data modifications without returning a value.
CYou need to return a single value that can be used in a SELECT statement.
DYou need to execute a series of commands that include transaction control.
Attempts:
2 left
💡 Hint
Functions return values and can be used inside queries.
❓ query_result
intermediate
2:00remaining
Output of calling a function in a SELECT
Given the function below, what is the output of the query SELECT calculate_tax(100);?
SQL
CREATE FUNCTION calculate_tax(amount DECIMAL) RETURNS DECIMAL DETERMINISTIC BEGIN RETURN amount * 0.1; END;
A0.1
B10.0
C100.0
DSyntax error
Attempts:
2 left
💡 Hint
The function returns 10% of the amount.
📝 Syntax
advanced
2:00remaining
Identify the syntax error in procedure declaration
Which option contains a syntax error in the procedure declaration?
SQL
CREATE PROCEDURE update_salary(emp_id INT, new_salary DECIMAL) BEGIN UPDATE employees SET salary = new_salary WHERE id = emp_id; END;
ACREATE PROCEDURE update_salary(emp_id INT, new_salary DECIMAL) AS BEGIN UPDATE employees SET salary = new_salary WHERE id = emp_id; END;
BCREATE PROCEDURE update_salary(emp_id INT, new_salary DECIMAL) BEGIN UPDATE employees SET salary = new_salary WHERE id = emp_id; END;
CCREATE PROCEDURE update_salary(emp_id INT, new_salary DECIMAL) BEGIN UPDATE employees SET salary = new_salary WHERE id = emp_id END;
D;DNE ;di_pme = di EREHW yralas_wen = yralas TES seeyolpme ETADPU NIGEB )LAMICED yralas_wen ,TNI di_pme(yralas_etadpu ERUDECORP ETAERC
Attempts:
2 left
💡 Hint
Check the keywords used in procedure declaration.
❓ optimization
advanced
2:00remaining
Choosing between function and procedure for performance
You need to perform a calculation repeatedly inside a large SELECT query. Which choice is best for performance?
AUse a procedure because it can handle multiple statements efficiently.
BUse a function because it can modify data during the SELECT.
CUse a procedure because it avoids recalculating values.
DUse a function because it can be inlined and called within the SELECT.
Attempts:
2 left
💡 Hint
Functions can be called inside queries and sometimes optimized by the database engine.
🔧 Debug
expert
3:00remaining
Why does this function cause an error when called?
Consider this function definition and call:

CREATE FUNCTION get_employee_name(emp_id INT) RETURNS VARCHAR(100) DETERMINISTIC BEGIN SELECT name FROM employees WHERE id = emp_id; END;

What error occurs when running SELECT get_employee_name(5);?
AFunction does not return a value error
BSyntax error in function body
CType mismatch error
DNo error, returns employee name
Attempts:
2 left
💡 Hint
Functions must explicitly return a value.

Practice

(1/5)
1. Which of the following is true about SQL functions compared to procedures?
easy
A. Functions return a value and can be used in SELECT queries.
B. Functions perform actions but do not return any value.
C. Procedures always return a value and can be used in WHERE clauses.
D. Procedures can be used inside SELECT statements like functions.

Solution

  1. Step 1: Understand the purpose of functions

    Functions are designed to return a value and can be called within queries like SELECT.
  2. Step 2: Compare with procedures

    Procedures perform tasks but do not return values directly and cannot be used inside SELECT statements.
  3. Final Answer:

    Functions return a value and can be used in SELECT queries. -> Option A
  4. Quick Check:

    Functions return values [OK]
Hint: Functions return values; procedures perform tasks [OK]
Common Mistakes:
  • Thinking procedures return values like functions
  • Using procedures inside SELECT queries
  • Confusing function usage with procedure usage
2. Which of the following is the correct syntax to create a SQL function that returns an integer?
easy
A. CREATE PROCEDURE getCount() BEGIN RETURN 10; END;
B. CREATE PROCEDURE getCount() RETURNS INT BEGIN RETURN 10; END;
C. CREATE FUNCTION getCount() BEGIN RETURN 10; END;
D. CREATE FUNCTION getCount() RETURNS INT BEGIN RETURN 10; END;

Solution

  1. Step 1: Identify function syntax

    Functions require specifying RETURNS type and a RETURN statement inside BEGIN...END.
  2. Step 2: Check options for correctness

    CREATE FUNCTION getCount() RETURNS INT BEGIN RETURN 10; END; correctly declares a function with RETURNS INT and returns a value. Others either use PROCEDURE or miss RETURNS.
  3. Final Answer:

    CREATE FUNCTION getCount() RETURNS INT BEGIN RETURN 10; END; -> Option D
  4. Quick Check:

    Functions need RETURNS and RETURN [OK]
Hint: Functions need RETURNS and RETURN statements [OK]
Common Mistakes:
  • Using PROCEDURE keyword for functions
  • Omitting RETURNS clause in function
  • Using RETURN in procedures incorrectly
3. Given the following SQL code, what will be the output of SELECT calculateTax(100); if calculateTax is a function that returns 10% of the input amount?
CREATE FUNCTION calculateTax(amount INT) RETURNS INT BEGIN RETURN amount * 0.1; END;
medium
A. 100
B. 0.1
C. 10
D. Error: Cannot multiply INT by decimal

Solution

  1. Step 1: Understand function logic

    The function multiplies the input amount by 0.1 to calculate 10% tax.
  2. Step 2: Calculate output for input 100

    100 * 0.1 = 10, so the function returns 10.
  3. Final Answer:

    10 -> Option C
  4. Quick Check:

    100 * 0.1 = 10 [OK]
Hint: Multiply input by 0.1 to get 10% tax [OK]
Common Mistakes:
  • Confusing 0.1 with 10
  • Expecting decimal output when function returns INT
  • Assuming error due to type mismatch
4. You wrote this procedure to update a user's email:
CREATE PROCEDURE updateEmail(userId INT, newEmail VARCHAR(100)) BEGIN UPDATE users SET email = newEmail WHERE id = userId; END;

When you try to call it with SELECT updateEmail(1, 'test@example.com');, you get an error. What is the problem?
medium
A. Procedures cannot be called inside SELECT statements.
B. The procedure is missing a RETURN statement.
C. The UPDATE statement syntax is incorrect.
D. The procedure parameters must be declared as OUT.

Solution

  1. Step 1: Understand procedure usage

    Procedures perform actions but do not return values and cannot be called inside SELECT queries.
  2. Step 2: Identify error cause

    Calling a procedure with SELECT causes error because procedures are invoked with CALL, not SELECT.
  3. Final Answer:

    Procedures cannot be called inside SELECT statements. -> Option A
  4. Quick Check:

    Use CALL for procedures, not SELECT [OK]
Hint: Call procedures with CALL, not SELECT [OK]
Common Mistakes:
  • Trying to use SELECT to call procedures
  • Expecting procedures to return values
  • Misunderstanding parameter directions
5. You need to create a reusable SQL routine that calculates the discount price and also logs the discount application in a table. Which approach is best?
hard
A. Use a single function to calculate discount and log the discount inside it.
B. Use a function to calculate discount and a procedure to log the discount.
C. Use a procedure to calculate discount and return the discounted price.
D. Use a procedure only to calculate discount and log the discount.

Solution

  1. Step 1: Separate calculation and action

    Functions should be used for calculations returning values; procedures for actions like logging.
  2. Step 2: Apply best practice

    Use a function to return the discount price, and a procedure to perform the logging task separately.
  3. Final Answer:

    Use a function to calculate discount and a procedure to log the discount. -> Option B
  4. Quick Check:

    Functions calculate; procedures perform tasks [OK]
Hint: Calculate with functions; log with procedures [OK]
Common Mistakes:
  • Trying to do logging inside functions
  • Expecting procedures to return values
  • Mixing calculation and side effects in one routine
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