RETURN and RETURN NEXT let you send results back from a function in PostgreSQL. They help you give one or many rows as output.
RETURN and RETURN NEXT in PostgreSQL
Start learning this pattern below
Jump into concepts and practice - no test required
or
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
Syntax
PostgreSQL
RETURN expression; RETURN NEXT expression;
RETURN sends back a single result and ends the function.
RETURN NEXT adds one row to the output but keeps the function running to add more rows.
Examples
PostgreSQL
RETURN 5;PostgreSQL
RETURN NEXT row_variable;
PostgreSQL
FOR i IN 1..3 LOOP RETURN NEXT i; END LOOP; RETURN;
Sample Program
This function returns three numbers as separate rows using RETURN NEXT. The final RETURN ends the function.
PostgreSQL
CREATE OR REPLACE FUNCTION get_numbers() RETURNS SETOF integer AS $$ BEGIN RETURN NEXT 10; RETURN NEXT 20; RETURN NEXT 30; RETURN; END; $$ LANGUAGE plpgsql; SELECT * FROM get_numbers();
Important Notes
Use RETURN NEXT inside loops to return many rows one at a time.
Use RETURN alone to return a single value or to end a function that returns multiple rows.
Functions that return SETOF need RETURN NEXT to add rows to the result set.
Summary
RETURN sends back one result and stops the function.
RETURN NEXT adds a row to the output but keeps the function running.
Use RETURN NEXT to return multiple rows from a function.
Practice
1. What does the
RETURN statement do in a PostgreSQL function?easy
Solution
Step 1: Understand the purpose of RETURN
The RETURN statement immediately sends a single result back to the caller and ends the function execution.Step 2: Compare with RETURN NEXT
Unlike RETURN NEXT, which adds rows and continues, RETURN stops the function after sending one result.Final Answer:
It sends back one result and stops the function. -> Option CQuick Check:
RETURN = sends one result and stops [OK]
Hint: RETURN sends one result and stops function immediately [OK]
Common Mistakes:
- Confusing RETURN with RETURN NEXT
- Thinking RETURN returns multiple rows
- Assuming RETURN continues function execution
2. Which of the following is the correct syntax to return multiple rows from a PostgreSQL function?
easy
Solution
Step 1: Identify how to return multiple rows
RETURN NEXT is used inside loops to add each row to the output without stopping the function.Step 2: Check syntax options
RETURN alone stops the function after one row; RETURN ALL and RETURN ROW are not valid PostgreSQL syntax.Final Answer:
Use RETURN NEXT inside a loop to add each row to the output. -> Option AQuick Check:
RETURN NEXT = add rows, keep running [OK]
Hint: Use RETURN NEXT in loops to return multiple rows [OK]
Common Mistakes:
- Using RETURN instead of RETURN NEXT for multiple rows
- Assuming RETURN ALL or RETURN ROW exist
- Not placing RETURN NEXT inside a loop
3. Consider this PostgreSQL function snippet:
What will be the output when this function is called?
FOR i IN 1..3 LOOP RETURN NEXT i; END LOOP; RETURN;
What will be the output when this function is called?
medium
Solution
Step 1: Analyze the loop with RETURN NEXT
The loop runs from 1 to 3, and each iteration adds the current number to the output using RETURN NEXT.Step 2: Understand the final RETURN
The final RETURN ends the function after all rows have been added, so the output is all numbers collected.Final Answer:
[1, 2, 3] -> Option DQuick Check:
RETURN NEXT adds rows; final RETURN stops function [OK]
Hint: RETURN NEXT inside loop collects rows; final RETURN stops [OK]
Common Mistakes:
- Thinking only last value is returned
- Confusing RETURN NEXT with RETURN
- Expecting syntax error from RETURN NEXT
4. You wrote this function:
What is the problem with this function?
CREATE FUNCTION test_func() RETURNS SETOF integer AS $$ DECLARE i integer := 1; BEGIN RETURN i; RETURN NEXT i + 1; END; $$ LANGUAGE plpgsql;
What is the problem with this function?
medium
Solution
Step 1: Check order of RETURN and RETURN NEXT
RETURN immediately ends the function, so RETURN NEXT after it never runs.Step 2: Understand function behavior
Because RETURN is first, only one row is returned and the rest is ignored.Final Answer:
RETURN NEXT is used after RETURN, so it never executes. -> Option AQuick Check:
RETURN stops function; code after it is skipped [OK]
Hint: RETURN stops function; code after it won't run [OK]
Common Mistakes:
- Assuming RETURN NEXT runs after RETURN
- Thinking RETURN can't be used in SETOF functions
- Believing variable initialization causes error
5. You want to create a function that returns all even numbers from 1 to 10. Which of these function bodies correctly uses
RETURN NEXT and RETURN to achieve this?hard
Solution
Step 1: Identify correct use of RETURN NEXT in loop with condition
FOR i IN 1..10 LOOP IF i % 2 = 0 THEN RETURN NEXT i; END IF; END LOOP; RETURN;loops 1 to 10, adds only even numbers with RETURN NEXT, then ends with RETURN.Step 2: Check other options for errors
FOR i IN 1..10 LOOP IF i % 2 = 0 THEN RETURN i; END IF; END LOOP;uses RETURN inside loop, stopping after first even number.FOR i IN 1..10 LOOP RETURN NEXT i; END LOOP; RETURN;
returns all numbers, not just even.RETURN NEXT 2; RETURN 4; RETURN NEXT 6; RETURN NEXT 8; RETURN NEXT 10; RETURN;
mixes RETURN NEXT and RETURN; RETURN 4 adds 4 and stops, returning only [2,4].Final Answer:
FOR i IN 1..10 LOOP IF i % 2 = 0 THEN RETURN NEXT i; END IF; END LOOP; RETURN; -> Option BQuick Check:
RETURN NEXT adds rows conditionally; RETURN ends function [OK]
Hint: Use RETURN NEXT inside loop with condition; end with RETURN [OK]
Common Mistakes:
- Using RETURN inside loop stopping early
- Returning all numbers instead of filtering
- Mixing RETURN and RETURN NEXT causing early termination
