Variables let you store and reuse values inside your database code. This helps you keep things organized and avoid repeating yourself.
Variable declaration and assignment 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
DECLARE variable_name data_type [DEFAULT initial_value];
-- To assign a value later inside a block:
variable_name := new_value;Variables are declared inside PL/pgSQL blocks like functions or DO blocks.
Use := to assign or change the value of a variable after declaration.
Examples
count as an integer and sets it to 0 initially.PostgreSQL
DECLARE count INTEGER DEFAULT 0;
name and assigns 'Alice' to it inside the block.PostgreSQL
DECLARE name TEXT; BEGIN name := 'Alice'; END;
total and assigns a decimal value.PostgreSQL
DECLARE total NUMERIC; BEGIN total := 100.50; END;
Sample Program
This code declares two variables, assigns a value to name, and prints a greeting message combining both variables.
PostgreSQL
DO $$ DECLARE greeting TEXT DEFAULT 'Hello'; name TEXT; BEGIN name := 'Bob'; RAISE NOTICE '% %!', greeting, name; END $$;
Important Notes
Variables only exist inside the block where they are declared.
You cannot use variables directly in plain SQL; they work inside PL/pgSQL blocks.
Use RAISE NOTICE to print variable values for debugging.
Summary
Variables store temporary values inside PL/pgSQL blocks.
Declare variables with DECLARE and assign values with :=.
Use variables to make your database code clearer and reusable.
Practice
1. What is the correct way to declare a variable named
counter of type integer in a PL/pgSQL block?easy
Solution
Step 1: Understand variable declaration syntax
In PL/pgSQL, variables are declared inside aDECLAREsection without repeating the DECLARE keyword for each variable. The correct syntax is:variable_name data_type;Step 2: Identify the correct declaration
The linecounter integer;correctly declares the variable inside the DECLARE block. Including the DECLARE keyword before each variable is incorrect.Final Answer:
counter integer; -> Option BQuick Check:
Declare variables inside DECLARE block without repeating DECLARE [OK]
Hint: Declare variables inside DECLARE block with type only [OK]
Common Mistakes:
- Omitting DECLARE keyword
- Assigning value during declaration without :=
- Using := in declaration line
2. Which of the following is the correct syntax to assign the value 10 to a variable
count after it has been declared in PL/pgSQL?easy
Solution
Step 1: Recall assignment operator in PL/pgSQL
PL/pgSQL uses:=to assign values to variables, not=or==.Step 2: Identify correct assignment syntax
count := 10; usescount := 10;which is the correct way to assign a value.Final Answer:
count := 10; -> Option DQuick Check:
Use := for assignment in PL/pgSQL [OK]
Hint: Use := to assign values to variables [OK]
Common Mistakes:
- Using = instead of :=
- Using SET keyword incorrectly
- Using == like in other languages
3. Consider the following PL/pgSQL block:
What will be the output when this block runs?
DECLARE total integer := 5; BEGIN total := total + 3; RAISE NOTICE '%', total; END;
What will be the output when this block runs?
medium
Solution
Step 1: Analyze initial value assignment
The variabletotalis declared and initialized to 5.Step 2: Calculate the new value after addition
The statementtotal := total + 3;adds 3 to 5, resulting in 8.Final Answer:
8 -> Option AQuick Check:
5 + 3 = 8 [OK]
Hint: Add assigned values step-by-step to find final result [OK]
Common Mistakes:
- Ignoring initial value and assuming zero
- Confusing assignment operator with equality
- Expecting error due to missing BEGIN
4. Identify the error in the following PL/pgSQL code snippet:
DECLARE name text; BEGIN name = 'Alice'; END;
medium
Solution
Step 1: Check variable declaration
The variablenameis declared correctly with typetext.Step 2: Check assignment syntax
The assignment uses=which is incorrect in PL/pgSQL; it should use:=.Final Answer:
Incorrect assignment operator used -> Option AQuick Check:
Use := for assignment, not = [OK]
Hint: Use := for assignment, not = [OK]
Common Mistakes:
- Using = instead of :=
- Forgetting semicolon after assignment
- Confusing declaration and assignment syntax
5. You want to declare two variables
a and b as integers, assign a the value 4, and then assign b the value of a multiplied by 3. Which of the following PL/pgSQL code snippets correctly does this?hard
Solution
Step 1: Check variable declaration and initialization
DECLARE a integer; b integer; BEGIN a := 4; b := a * 3; END; declares both variables without initial values, then assigns values inside theBEGINblock using correct assignment operator:=.Step 2: Verify assignment and calculation
It assignsa := 4;and thenb := a * 3;, which correctly setsbto 12.Final Answer:
correctly declares and assigns variables with := -> Option CQuick Check:
Declare first, assign with := inside BEGIN [OK]
Hint: Declare variables first, assign values inside BEGIN with := [OK]
Common Mistakes:
- Using = instead of :=
- Assigning values during declaration with expressions
- Missing BEGIN block for assignments
