A user-defined function is a custom function created by the user to perform specific tasks or calculations that can be reused in SQL queries.
Click to reveal answer
beginner
How do you call a user-defined function in a SQL query?
You call a user-defined function by using its name followed by parentheses, optionally passing arguments inside the parentheses, like: SELECT function_name(arguments);
Click to reveal answer
intermediate
What are the two main types of user-defined functions in SQL?
The two main types are scalar functions, which return a single value, and table-valued functions, which return a table (multiple rows and columns).
Click to reveal answer
beginner
Why use user-defined functions instead of repeating code in SQL?
User-defined functions help avoid repeating code, make queries easier to read, and allow reusing logic in many places, saving time and reducing errors.
Click to reveal answer
intermediate
Can user-defined functions modify data in SQL tables?
No, user-defined functions cannot change data in tables. They only return values and do not perform insert, update, or delete operations.
Click to reveal answer
What does a scalar user-defined function return?
ANo value
BA table with multiple rows
CA list of tables
DA single value
✗ Incorrect
Scalar functions return a single value, such as a number or text.
Which SQL statement is used to create a user-defined function?
ACREATE FUNCTION
BCREATE PROCEDURE
CCREATE TABLE
DCREATE VIEW
✗ Incorrect
User-defined functions are created using the CREATE FUNCTION statement.
Can a user-defined function perform INSERT operations on tables?
AYes, always
BNo, functions cannot modify data
COnly if specified
DOnly in some SQL dialects
✗ Incorrect
User-defined functions cannot modify data; they only return values.
What is a benefit of using user-defined functions?
AThey simplify complex calculations
BThey make queries longer
CThey reduce code reuse
DThey slow down queries
✗ Incorrect
User-defined functions simplify complex calculations by encapsulating logic.
How do you pass input to a user-defined function?
AYou cannot pass input
BBy using global variables
CBy specifying parameters inside parentheses
DBy writing inside the function body
✗ Incorrect
Input is passed to functions as parameters inside parentheses.
Explain what a user-defined function is and why it is useful in SQL.
Think about how you might reuse a calculation many times.
You got /4 concepts.
Describe the difference between scalar and table-valued user-defined functions.
One returns one value, the other returns many rows.
You got /4 concepts.
Practice
(1/5)
1. What is the main purpose of a user-defined function in SQL?
easy
A. To create reusable code that returns a single value
B. To store large amounts of data
C. To create tables automatically
D. To delete records from a table
Solution
Step 1: Understand what user-defined functions do
User-defined functions are designed to perform specific tasks and return a single value.
Step 2: Compare options with the function's purpose
Only To create reusable code that returns a single value describes creating reusable code that returns a single value, which matches the function's role.
Final Answer:
To create reusable code that returns a single value -> Option A
Quick Check:
User-defined function = reusable single-value code [OK]
Hint: Functions return one value and reuse code easily [OK]
Common Mistakes:
Confusing functions with tables or data storage
Thinking functions delete or modify data directly
Assuming functions return multiple rows or tables
2. Which of the following is the correct way to start creating a scalar user-defined function in SQL?
easy
A. DROP FUNCTION function_name();
B. CREATE FUNCTION function_name() RETURNS INT AS BEGIN RETURN 1; END;
C. SELECT FUNCTION function_name();
D. CREATE TABLE function_name();
Solution
Step 1: Identify the correct syntax for creating a function
The correct syntax starts with CREATE FUNCTION, specifies the return type, and includes a BEGIN...END block.
Step 2: Check each option's validity
CREATE FUNCTION function_name() RETURNS INT AS BEGIN RETURN 1; END; matches the correct syntax. Options A, B, and C are for other SQL commands (dropping, table creation, and selection).
Final Answer:
CREATE FUNCTION function_name() RETURNS INT AS BEGIN RETURN 1; END; -> Option B
Quick Check:
CREATE FUNCTION + RETURNS + BEGIN...END = correct syntax [OK]
Hint: Functions start with CREATE FUNCTION and specify RETURNS [OK]
Common Mistakes:
Using CREATE TABLE instead of CREATE FUNCTION
Trying to SELECT a function directly without calling it
Confusing DROP FUNCTION with creation syntax
3. Given the function below, what will be the output of SELECT dbo.AddFive(10);?
CREATE FUNCTION dbo.AddFive(@num INT) RETURNS INT AS BEGIN RETURN @num + 5; END;
medium
A. 5
B. 10
C. 15
D. Syntax Error
Solution
Step 1: Understand the function logic
The function takes an integer input and returns the input plus 5.
Step 2: Calculate the output for input 10
10 + 5 = 15, so the function returns 15.
Final Answer:
15 -> Option C
Quick Check:
Input 10 + 5 = 15 [OK]
Hint: Add input to 5 as function returns input + 5 [OK]
Common Mistakes:
Confusing input and output values
Assuming function returns input unchanged
Expecting syntax error due to missing parameters
4. Identify the error in the following user-defined function:
CREATE FUNCTION dbo.MultiplyByTwo(@val INT)
RETURNS INT
BEGIN
SET @val = @val * 2;
RETURN @val;
END;
medium
A. Missing AS keyword before BEGIN
B. Functions cannot modify input parameters
C. RETURN statement is not allowed in functions
D. Function must return VARCHAR, not INT
Solution
Step 1: Review function syntax rules
In SQL, the AS keyword is required before the BEGIN block in function definitions.
Step 2: Check the given function
The function is missing AS before BEGIN, causing a syntax error.
Final Answer:
Missing AS keyword before BEGIN -> Option A
Quick Check:
CREATE FUNCTION ... RETURNS ... AS BEGIN ... [OK]
Hint: Always include AS before BEGIN in function syntax [OK]
Common Mistakes:
Trying to modify input parameters inside functions
Omitting AS keyword before BEGIN
Confusing function return types
5. You want to create a user-defined function that returns the length of a string only if the string is not empty; otherwise, it returns 0. Which of the following function definitions correctly implements this logic?
hard
A. CREATE FUNCTION dbo.StringLength(@input VARCHAR(100)) RETURNS INT AS BEGIN RETURN NULL; END;
B. CREATE FUNCTION dbo.StringLength(@input VARCHAR(100)) RETURNS INT AS BEGIN IF @input = '' RETURN 1; ELSE RETURN LEN(@input); END;
C. CREATE FUNCTION dbo.StringLength(@input VARCHAR(100)) RETURNS INT AS BEGIN RETURN CASE WHEN @input = '' THEN 1 ELSE LEN(@input) END; END;
D. CREATE FUNCTION dbo.StringLength(@input VARCHAR(100)) RETURNS INT AS BEGIN RETURN LEN(@input); END;
Solution
Step 1: Understand the requirement
The function must return 0 if the string is empty, otherwise return its length.
Step 2: Analyze each option
CREATE FUNCTION dbo.StringLength(@input VARCHAR(100)) RETURNS INT AS BEGIN RETURN LEN(@input); END; correctly returns LEN(@input), and since LEN('')=0 it satisfies the logic. CREATE FUNCTION dbo.StringLength(@input VARCHAR(100)) RETURNS INT AS BEGIN IF @input = '' RETURN 1; ELSE RETURN LEN(@input); END; returns 1 for empty strings, incorrect. CREATE FUNCTION dbo.StringLength(@input VARCHAR(100)) RETURNS INT AS BEGIN RETURN CASE WHEN @input = '' THEN 1 ELSE LEN(@input) END; END; returns 1 for empty strings using CASE, incorrect. CREATE FUNCTION dbo.StringLength(@input VARCHAR(100)) RETURNS INT AS BEGIN RETURN NULL; END; always returns NULL, which is incorrect.
Final Answer:
CREATE FUNCTION dbo.StringLength(@input VARCHAR(100)) RETURNS INT AS BEGIN RETURN LEN(@input); END; -> Option D
Quick Check:
LEN('') = 0 satisfies condition [OK]
Hint: LEN('') returns 0 for empty strings [OK]
Common Mistakes:
Returning incorrect value (like 1) for empty strings
Using overly complex conditional logic unnecessarily
Returning NULL instead of 0 for empty strings
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.