You want to create a function that returns both the count of rows and the maximum value from a table using OUT parameters. Which function definition is correct?
hard📝 Application Q8 of 15
PostgreSQL - Advanced PL/pgSQL
You want to create a function that returns both the count of rows and the maximum value from a table using OUT parameters. Which function definition is correct?
ACREATE FUNCTION stats(OUT row_count INT, OUT max_val INT) AS $$ BEGIN SELECT COUNT(*), MAX(value) INTO row_count, max_val FROM my_table; END; $$ LANGUAGE plpgsql;
BCREATE FUNCTION stats() RETURNS TABLE(row_count INT, max_val INT) AS $$ BEGIN SELECT COUNT(*), MAX(value) FROM my_table; END; $$ LANGUAGE plpgsql;
CCREATE FUNCTION stats(OUT row_count INT, OUT max_val INT) RETURNS VOID AS $$ BEGIN SELECT COUNT(*), MAX(value) INTO row_count, max_val FROM my_table; END; $$ LANGUAGE plpgsql;
DCREATE FUNCTION stats(row_count INT OUT, max_val INT OUT) RETURNS RECORD AS $$ BEGIN SELECT COUNT(*), MAX(value) INTO row_count, max_val FROM my_table; END; $$ LANGUAGE plpgsql;
Step-by-Step Solution
Solution:
Step 1: Check OUT parameter declaration
OUT parameters are declared as 'OUT name type' before RETURNS clause.
Step 2: Verify SELECT INTO usage
SELECT ... INTO assigns query results to OUT parameters inside the function body.
Step 3: Confirm RETURNS clause
Functions with OUT parameters can omit RETURNS or specify matching type; VOID is incorrect here.
Final Answer:
CREATE FUNCTION stats(OUT row_count INT, OUT max_val INT) AS $$ BEGIN SELECT COUNT(*), MAX(value) INTO row_count, max_val FROM my_table; END; $$ LANGUAGE plpgsql; -> Option A
Quick Check:
OUT params + SELECT INTO = correct function [OK]
Quick Trick:Use SELECT INTO to assign OUT parameters inside function [OK]
Common Mistakes:
Misplacing OUT keyword
Using RETURNS VOID with OUT parameters
Omitting SELECT INTO for OUT parameters
Master "Advanced PL/pgSQL" in PostgreSQL
9 interactive learning modes - each teaches the same concept differently