PL/SQL - Cú pháp cơ bản
Chào mừng các bạn, những nhà lập trình tương lai! Hôm nay, chúng ta sẽ cùng bước vào thế giới thú vị của PL/SQL. Đừng lo lắng nếu bạn chưa từng viết một dòng mã trước đây - chúng ta sẽ bắt đầu từ đầu và xây dựng kiến thức của bạn từng bước. Cuối cùng của bài hướng dẫn này, bạn sẽ tự tin viết ra những chương trình PL/SQL đầu tiên của mình!
Ví dụ 'Hello World'
Hãy bắt đầu với chương trình "Hello World" truyền thống. Đây là một nghi lễ của mọi nhà lập trình, và nó là một cách tuyệt vời để chúng ta làm quen với cú pháp PL/SQL.
BEGIN
DBMS_OUTPUT.PUT_LINE('Hello, World!');
END;
/
Hãy phân tích nó:
-
BEGIN
: Từ khóa này đánh dấu bắt đầu của khối PL/SQL. -
DBMS_OUTPUT.PUT_LINE('Hello, World!');
: Dòng này in ra thông báo. Hãy nghĩ về nó như cách PL/SQL giao tiếp với chúng ta. -
END;
: Điều này đánh dấu kết thúc của khối PL/SQL. -
/
: Dấu gạch chéo này cho biết SQL*Plus thực thi khối PL/SQL.
Khi bạn chạy đoạn mã này, bạn sẽ thấy "Hello, World!" được in trên màn hình. Chúc mừng! Bạn vừa viết xong chương trình PL/SQL đầu tiên của mình.
Các Tên Định danh trong PL/SQL
Các tên định danh là những tên chúng ta đặt cho các phần tử khác nhau trong chương trình như biến, thủ tục và hàm. Chúng giống như thẻ tên cho các phần khác nhau của mã của chúng ta. Dưới đây là các quy tắc để tạo tên định danh:
- Phải bắt đầu bằng một chữ cái (A-Z hoặc a-z)
- Có thể tiếp theo là các chữ cái, số (0-9), dấu dollar ($), dấu gạch dưới (_) hoặc dấu số (#)
- Không được dài quá 30 ký tự
- Không được là từ khóa (như BEGIN, END, IF, v.v.)
Hãy xem một số ví dụ:
DECLARE
employee_name VARCHAR2(50);
salary NUMBER;
dept_id NUMBER(5);
BEGIN
-- Mã ở đây
END;
/
Trong ví dụ này, employee_name
, salary
, và dept_id
đều là các tên định danh hợp lệ.
Các Dấu Phânway trong PL/SQL
Các dấu phânway là các ký tự hoặc符号 có ý nghĩa đặc biệt trong PL/SQL. Chúng giống như các dấu câu trong một câu, giúp cấu trúc và tách biệt các phần khác nhau của mã của chúng ta.
Dưới đây là bảng các dấu phânway phổ biến:
Dấu Phânway | Mô tả |
---|---|
; | Kết thúc câu lệnh |
% | Chỉ thị thuộc tính |
. | Chọn phần tử |
( ) | Bao gồm danh sách các tham số |
, | Phân cách tham số |
:= | Toán tử gán |
=> | Toán tử liên kết |
-- | Chỉ thị bình luận dòng đơn |
/ / | Chỉ thị bình luận đa dòng |
Hãy xem một số ví dụ:
DECLARE
v_count NUMBER := 0; -- Toán tử gán
v_name VARCHAR2(50) := 'John Doe';
BEGIN
v_count := v_count + 1; -- Kết thúc câu lệnh
DBMS_OUTPUT.PUT_LINE('Name: ' || v_name); -- Chọn phần tử
END;
/
Các Bình Luận trong PL/SQL
Bình luận giống như các note dán trong mã của bạn. Compiler sẽ bỏ qua chúng, nhưng chúng có thể rất hữu ích để giải thích mã của bạn. Có hai loại bình luận trong PL/SQL:
- Bình luận dòng đơn: Bắt đầu với
--
- Bình luận đa dòng: Bao gồm giữa
/*
và*/
Dưới đây là một ví dụ:
DECLARE
-- Đây là bình luận dòng đơn
v_pi NUMBER := 3.14159;
BEGIN
/*
Đây là bình luận đa dòng.
Nó có thể跨越多行.
Rất hữu ích cho các giải thích dài.
*/
DBMS_OUTPUT.PUT_LINE('Giá trị của pi là: ' || v_pi);
END;
/
Các Đơn Vị Chương Trình PL/SQL
Các đơn vị chương trình PL/SQL là các khối xây dựng của các ứng dụng PL/SQL. Chúng giống như các công thức trong một sách nấu ăn - mỗi một đơn vị mô tả cách thực hiện một nhiệm vụ cụ thể. Các loại chính bao gồm:
- Khối vô danh
- Thủ tục
- Hàm
- Gói
Hãy xem các ví dụ của từng loại:
1. Khối vô danh
Chúng ta đã thấy điều này trong ví dụ "Hello World". Đây là một khối mã không được lưu trong cơ sở dữ liệu.
BEGIN
DBMS_OUTPUT.PUT_LINE('This is an anonymous block');
END;
/
2. Thủ tục
Một thủ tục là một khối PL/SQL có tên thực hiện một hành động cụ thể.
CREATE OR REPLACE PROCEDURE greet_user(p_name IN VARCHAR2) IS
BEGIN
DBMS_OUTPUT.PUT_LINE('Hello, ' || p_name || '!');
END;
/
-- Để gọi thủ tục:
BEGIN
greet_user('Alice');
END;
/
3. Hàm
Một hàm tương tự như một thủ tục, nhưng nó trả về một giá trị.
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;
/
-- Để sử dụng hàm:
DECLARE
v_area NUMBER;
BEGIN
v_area := calculate_area(5);
DBMS_OUTPUT.PUT_LINE('Diện tích là: ' || v_area);
END;
/
4. Gói
Một gói là một bộ sưu tập các thủ tục, hàm, biến và các đối tượng PL/SQL khác liên quan.
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;
/
-- Để sử dụng gói:
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;
/
Và đó là tất cả! Chúng ta đã bao gồm cú pháp cơ bản của PL/SQL, từ các chương trình "Hello World" đơn giản đến các cấu trúc phức tạp hơn như gói. Nhớ rằng, học lập trình giống như học một ngôn ngữ mới - nó đòi hỏi sự thực hành và kiên nhẫn. Đừng ngại thử nghiệm với các ví dụ mã, sửa đổi chúng và xem会发生什么. Đó là cách bạn thực sự lĩnh hội các khái niệm này và trở thành một nhà lập trình PL/SQL thành thạo.
Chúc các bạn may mắn và hy vọng các truy vấn của bạn luôn trả về kết quả như mong đợi!
Credits: Image by storyset