PL/SQL - Basic Syntax
Welcome, future programmers! Today, we're diving into the exciting world of PL/SQL. Don't worry if you've never written a line of code before - we'll start from scratch and build your knowledge step by step. By the end of this tutorial, you'll be writing your first PL/SQL programs with confidence!
The 'Hello World' Example
Let's kick things off with the traditional "Hello World" program. It's a rite of passage for every programmer, and it's a great way to get our feet wet with PL/SQL syntax.
BEGIN
DBMS_OUTPUT.PUT_LINE('Hello, World!');
END;
/
Let's break this down:
-
BEGIN
: This keyword marks the start of our PL/SQL block. -
DBMS_OUTPUT.PUT_LINE('Hello, World!');
: This line prints our message. Think of it as PL/SQL's way of speaking to us. -
END;
: This marks the end of our PL/SQL block. -
/
: This forward slash tells SQL*Plus to execute the PL/SQL block.
When you run this code, you'll see "Hello, World!" printed on your screen. Congratulations! You've just written your first PL/SQL program.
The PL/SQL Identifiers
Identifiers are names we give to various program elements like variables, procedures, and functions. They're like nametags for different parts of our code. Here are the rules for creating identifiers:
- Must start with a letter (A-Z or a-z)
- Can be followed by letters, numbers (0-9), dollar signs ($), underscores (_), or pound signs (#)
- Cannot be longer than 30 characters
- Cannot be a reserved word (like BEGIN, END, IF, etc.)
Let's look at some examples:
DECLARE
employee_name VARCHAR2(50);
salary NUMBER;
dept_id NUMBER(5);
BEGIN
-- Code goes here
END;
/
In this example, employee_name
, salary
, and dept_id
are all valid identifiers.
The PL/SQL Delimiters
Delimiters are special characters or symbols that have a specific meaning in PL/SQL. They're like punctuation marks in a sentence, helping to structure and separate different parts of our code.
Here's a table of common PL/SQL delimiters:
Delimiter | Description |
---|---|
; | Statement terminator |
% | Attribute indicator |
. | Component selector |
( ) | Enclose list of parameters |
, | Parameter separator |
:= | Assignment operator |
=> | Association operator |
-- | Single-line comment indicator |
/ / | Multi-line comment indicators |
Let's see some of these in action:
DECLARE
v_count NUMBER := 0; -- Assignment operator
v_name VARCHAR2(50) := 'John Doe';
BEGIN
v_count := v_count + 1; -- Statement terminator
DBMS_OUTPUT.PUT_LINE('Name: ' || v_name); -- Component selector
END;
/
The PL/SQL Comments
Comments are like sticky notes in your code. They're ignored by the compiler but can be incredibly useful for explaining what your code does. There are two types of comments in PL/SQL:
- Single-line comments: Start with
--
- Multi-line comments: Enclosed between
/*
and*/
Here's an example:
DECLARE
-- This is a single-line comment
v_pi NUMBER := 3.14159;
BEGIN
/*
This is a multi-line comment.
It can span several lines.
Very useful for longer explanations.
*/
DBMS_OUTPUT.PUT_LINE('The value of pi is: ' || v_pi);
END;
/
PL/SQL Program Units
PL/SQL program units are the building blocks of PL/SQL applications. They're like recipes in a cookbook - each one describes how to perform a specific task. The main types are:
- Anonymous Blocks
- Procedures
- Functions
- Packages
Let's look at examples of each:
1. Anonymous Block
We've already seen this in our "Hello World" example. It's a block of code that isn't saved in the database.
BEGIN
DBMS_OUTPUT.PUT_LINE('This is an anonymous block');
END;
/
2. Procedure
A procedure is a named PL/SQL block that performs a specific action.
CREATE OR REPLACE PROCEDURE greet_user(p_name IN VARCHAR2) IS
BEGIN
DBMS_OUTPUT.PUT_LINE('Hello, ' || p_name || '!');
END;
/
-- To call the procedure:
BEGIN
greet_user('Alice');
END;
/
3. Function
A function is similar to a procedure, but it returns a value.
CREATE OR REPLACE FUNCTION calculate_area(p_radius IN NUMBER)
RETURN NUMBER IS
v_pi CONSTANT NUMBER := 3.14159;
BEGIN
RETURN v_pi * p_radius * p_radius;
END;
/
-- To use the function:
DECLARE
v_area NUMBER;
BEGIN
v_area := calculate_area(5);
DBMS_OUTPUT.PUT_LINE('The area is: ' || v_area);
END;
/
4. Package
A package is a collection of related procedures, functions, variables, and other PL/SQL objects.
CREATE OR REPLACE PACKAGE math_operations AS
FUNCTION add_numbers(a IN NUMBER, b IN NUMBER) RETURN NUMBER;
FUNCTION subtract_numbers(a IN NUMBER, b IN NUMBER) RETURN NUMBER;
END math_operations;
/
CREATE OR REPLACE PACKAGE BODY math_operations AS
FUNCTION add_numbers(a IN NUMBER, b IN NUMBER) RETURN NUMBER IS
BEGIN
RETURN a + b;
END add_numbers;
FUNCTION subtract_numbers(a IN NUMBER, b IN NUMBER) RETURN NUMBER IS
BEGIN
RETURN a - b;
END subtract_numbers;
END math_operations;
/
-- To use the package:
DECLARE
v_result NUMBER;
BEGIN
v_result := math_operations.add_numbers(10, 5);
DBMS_OUTPUT.PUT_LINE('10 + 5 = ' || v_result);
v_result := math_operations.subtract_numbers(10, 5);
DBMS_OUTPUT.PUT_LINE('10 - 5 = ' || v_result);
END;
/
And there you have it! We've covered the basic syntax of PL/SQL, from simple "Hello World" programs to more complex structures like packages. Remember, learning to program is like learning a new language - it takes practice and patience. Don't be afraid to experiment with the code examples, modify them, and see what happens. That's how you'll truly internalize these concepts and become a proficient PL/SQL programmer.
Happy coding, and may your queries always return the results you expect!
Credits: Image by storyset