Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What does the RAISE statement do in PostgreSQL?
The RAISE statement sends messages or errors during the execution of a PL/pgSQL block. It can show notices, warnings, or raise exceptions to stop execution.
Click to reveal answer
beginner
What are the different levels you can use with RAISE in PostgreSQL?
You can use RAISE with levels: NOTICE, WARNING, EXCEPTION, LOG, and DEBUG. EXCEPTION stops execution, others just show messages.
Click to reveal answer
beginner
How do you raise a custom exception with a message in PostgreSQL?
Use: RAISE EXCEPTION 'Your message here'; This stops the function and shows the error message.
Click to reveal answer
beginner
What is the purpose of RAISE NOTICE in a PL/pgSQL function?
RAISE NOTICE shows an informational message to the user without stopping the function. It's useful for debugging or status updates.
Click to reveal answer
intermediate
Can you include variables in RAISE messages? How?
Yes, use format strings with % placeholders and provide variables after the message. Example: RAISE NOTICE 'Value is %', my_var;
Click to reveal answer
Which RAISE level in PostgreSQL stops the execution of a function?
ANOTICE
BWARNING
CEXCEPTION
DLOG
✗ Incorrect
RAISE EXCEPTION stops the function execution and raises an error.
What does RAISE NOTICE do in a PL/pgSQL block?
AStops execution with an error
BShows an informational message without stopping
CLogs a message to the server log only
DIgnores the message completely
✗ Incorrect
RAISE NOTICE displays a message to the client but does not stop execution.
How do you include a variable value in a RAISE message?
AUse % placeholders and pass variables after the message
BUse $variable directly inside the string
CConcatenate strings with +
DVariables cannot be included in RAISE messages
✗ Incorrect
RAISE supports format strings with % placeholders and variables passed after the message.
Which RAISE level is best for debugging messages that you want to see only sometimes?
AEXCEPTION
BNOTICE
CWARNING
DDEBUG
✗ Incorrect
RAISE DEBUG is used for detailed debugging messages, which can be enabled or disabled.
What happens if you use RAISE WARNING in a function?
AA warning message is shown but function continues
BFunction stops immediately
CMessage is logged but not shown to user
DNothing happens
✗ Incorrect
RAISE WARNING shows a warning message but does not stop the function execution.
Explain how to use the RAISE statement to show a notice and to raise an exception in PostgreSQL.
Think about messages that inform vs. errors that stop.
You got /3 concepts.
Describe how to include variable values inside RAISE messages in PL/pgSQL.
It's similar to formatting strings in many programming languages.
You got /3 concepts.
Practice
(1/5)
1. What does the RAISE NOTICE statement do in PostgreSQL?
easy
A. It silently logs a message without showing it to the user.
B. It stops the code execution and returns an error.
C. It sends a message to the client but continues running the code.
D. It restarts the current transaction automatically.
Solution
Step 1: Understand RAISE NOTICE behavior
RAISE NOTICE sends an informational message to the client but does not stop the execution.
Step 2: Compare with other RAISE levels
Unlike EXCEPTION, which stops execution, NOTICE only shows a message and continues.
Final Answer:
It sends a message to the client but continues running the code. -> Option C
Quick Check:
RAISE NOTICE = message without stopping [OK]
Hint: NOTICE shows messages but never stops code [OK]
Common Mistakes:
Confusing NOTICE with EXCEPTION stopping code
Thinking NOTICE hides messages
Assuming NOTICE restarts transactions
2. Which of the following is the correct syntax to raise a warning message in a PostgreSQL function?
easy
A. RAISE WARNING 'This is a warning';
B. RAISE WARN 'This is a warning';
C. RAISE WARNNING 'This is a warning';
D. RAISE WARN_MSG 'This is a warning';
Solution
Step 1: Recall correct RAISE syntax for warnings
The correct keyword is WARNING, not WARN or other variants.
Step 2: Validate syntax correctness
RAISE WARNING 'message'; is the valid syntax to raise a warning message.
Final Answer:
RAISE WARNING 'This is a warning'; -> Option A
Quick Check:
RAISE WARNING = correct syntax [OK]
Hint: Use full word WARNING, not abbreviations [OK]
Common Mistakes:
Using 'WARN' instead of 'WARNING'
Misspelling WARNING as WARNNING
Inventing unsupported keywords like WARN_MSG
3. Consider this PostgreSQL PL/pgSQL block:
DO $$
BEGIN
RAISE NOTICE 'Step 1';
RAISE WARNING 'Step 2';
RAISE EXCEPTION 'Step 3';
RAISE NOTICE 'Step 4';
END $$;
What will be the output?
medium
A. Step 1 and Step 4 notices print, but warning and exception are ignored.
B. All four messages print: Step 1, Step 2, Step 3, Step 4.
C. Only Step 3 error message is shown, others are ignored.
D. Step 1 (notice), Step 2 (warning), then error 'Step 3', and stops before Step 4.
Solution
Step 1: Trace the RAISE statements in order
RAISE NOTICE 'Step 1' prints a message and continues.
Step 2: Understand RAISE WARNING and EXCEPTION effects
RAISE WARNING 'Step 2' prints a warning and continues. RAISE EXCEPTION 'Step 3' raises an error and stops execution immediately.
Step 3: Check if Step 4 runs
Since EXCEPTION stops execution, RAISE NOTICE 'Step 4' does not run.
Final Answer:
Step 1 (notice), Step 2 (warning), then error 'Step 3', and stops before Step 4. -> Option D
Quick Check:
EXCEPTION stops code after Step 3 [OK]
Hint: EXCEPTION stops code; notices/warnings do not [OK]
Common Mistakes:
Assuming all messages print despite EXCEPTION
Thinking WARNING stops execution
Ignoring that EXCEPTION halts code immediately
4. You wrote this code inside a PostgreSQL function:
RAISE EXCEPTION 'Error: %', message;
But it causes an error: "ERROR: column "message" does not exist". What is the likely problem?
medium
A. The variable 'message' is not declared or out of scope.
B. RAISE EXCEPTION cannot use placeholders like '%'.
C. You must use RAISE WARNING instead of EXCEPTION for variables.
D. The syntax requires double quotes around 'message'.
Solution
Step 1: Understand the error message
The error says column "message" does not exist, meaning 'message' is treated as a column or variable but is undefined.
Step 2: Check variable declaration and scope
In PL/pgSQL, variables must be declared before use. If 'message' is not declared or out of scope, this error occurs.
Final Answer:
The variable 'message' is not declared or out of scope. -> Option A
Quick Check:
Undefined variable causes this error [OK]
Hint: Declare variables before using in RAISE [OK]
Common Mistakes:
Thinking placeholders '%' are invalid
Using RAISE WARNING instead of EXCEPTION for variables
Adding quotes around variable names incorrectly
5. You want to write a PostgreSQL function that checks if a user age is below 18 and raises an exception with a custom message including the age. Which code snippet correctly does this?
hard
A. IF age < 18 THEN RAISE EXCEPTION 'User age % is too young' || age; END IF;
B. IF age < 18 THEN RAISE EXCEPTION 'User age % is too young', age; END IF;
C. IF age < 18 THEN RAISE EXCEPTION MESSAGE = 'User age ' || age || ' is too young'; END IF;
D. IF age < 18 THEN RAISE EXCEPTION 'User age % is too young', 'age'; END IF;
Solution
Step 1: Understand RAISE EXCEPTION with placeholders
RAISE EXCEPTION supports printf-style placeholders like % and variables as arguments.
Step 2: Check each option's correctness
IF age < 18 THEN RAISE EXCEPTION 'User age % is too young', age; END IF; correctly uses the % placeholder followed by the variable age as an argument. IF age < 18 THEN RAISE EXCEPTION 'User age % is too young' || age; END IF; incorrectly concatenates the variable to the format string, resulting in an unreplaced % and a runtime format error. IF age < 18 THEN RAISE EXCEPTION MESSAGE = 'User age ' || age || ' is too young'; END IF; omits the required USING keyword before MESSAGE=, causing a syntax error. IF age < 18 THEN RAISE EXCEPTION 'User age % is too young', 'age'; END IF; passes the string literal 'age' instead of the variable.
Final Answer:
IF age < 18 THEN RAISE EXCEPTION 'User age % is too young', age; END IF; -> Option B
Quick Check:
Use % and variable for dynamic messages [OK]
Hint: Use % placeholder with variable, not string 'age' [OK]
Common Mistakes:
Concatenating strings instead of using placeholders
Passing variable name as string instead of variable