Trang chủ » Lập Trình PL/SQL: Tạo Ra Chương Trình Tùy Chỉnh Theo Nhu Cầu Kinh Doanh
Lập Trình PL/SQL: Tạo Ra Chương Trình Tùy Chỉnh Theo Nhu Cầu Kinh Doanh
- 17/04/2023
- LANIT JSC
Oracle PL/SQL là một ngôn ngữ lập trình thủ tục mạnh mẽ, tích hợp sẵn trong Oracle Database, cung cấp cho người dùng khả năng tùy chỉnh và mở rộng chức năng của cơ sở dữ liệu. Với khả năng xử lý lớn và tính năng bảo mật cao, Oracle PL/SQL đang trở thành một trong những công nghệ phổ biến nhất cho các ứng dụng doanh nghiệp. Hãy tìm hiểu thêm về Oracle PL/SQL và những lợi ích của nó trong bài viết dưới đây
Giới thiệu về PL/SQL
PL/SQL là một ngôn ngữ lập trình được phát triển bởi Oracle Corporation để thực hiện các tác vụ liên quan đến cơ sở dữ liệu trong hệ thống quản lý cơ sở dữ liệu Oracle. PL/SQL là viết tắt của “Procedural Language/Structured Query Language” và cung cấp các tính năng lập trình thủ tục, hàm và giao thức xử lý cơ sở dữ liệu, kết hợp với các lệnh SQL để truy cập và thao tác cơ sở dữ liệu.

PL/SQL cho phép các lập trình viên viết các chương trình và thủ tục phức tạp để xử lý dữ liệu trong cơ sở dữ liệu. Nó cũng hỗ trợ các tính năng lập trình như lập trình hướng đối tượng, xử lý lỗi, xử lý ngoại lệ và quản lý bộ nhớ.
PL/SQL được tích hợp sâu vào hệ thống quản lý cơ sở dữ liệu Oracle và là một phần quan trọng của các ứng dụng phát triển trên nền tảng Oracle. Các lập trình viên có thể sử dụng PL/SQL để viết các ứng dụng đa nền tảng, web hoặc trên máy tính cá nhân, và có thể đảm bảo tính toàn vẹn và an ninh của dữ liệu trong cơ sở dữ liệu.
Lợi ích của việc sử dụng PL/SQL
Việc sử dụng PL/SQL có nhiều lợi ích, bao gồm:
Tăng hiệu suất và độ tin cậy:
PL/SQL cho phép các lập trình viên thực hiện các tác vụ xử lý dữ liệu trong cơ sở dữ liệu, giảm thiểu việc truyền dữ liệu qua mạng và tăng hiệu suất của ứng dụng. Các thủ tục PL/SQL cũng có thể được lưu trữ và sử dụng lại, giúp tăng độ tin cậy và giảm thiểu lỗi trong ứng dụng.
Bảo mật dữ liệu:
PL/SQL cung cấp các tính năng bảo mật để đảm bảo rằng dữ liệu trong cơ sở dữ liệu được bảo vệ và không bị truy cập hoặc sửa đổi trái phép.
Dễ dàng quản lý cơ sở dữ liệu:
PL/SQL cho phép các lập trình viên thực hiện các tác vụ quản lý cơ sở dữ liệu như tạo bảng, chỉnh sửa dữ liệu, đồng bộ hóa dữ liệu và sao lưu dữ liệu.
Tích hợp với các ứng dụng:
PL/SQL được tích hợp sâu vào hệ thống quản lý cơ sở dữ liệu Oracle, cho phép các lập trình viên tạo các ứng dụng đa nền tảng và tích hợp chúng với các ứng dụng khác.
Tối ưu hóa tài nguyên:
PL/SQL cung cấp các tính năng tối ưu hóa tài nguyên để giảm thiểu việc sử dụng bộ nhớ và ổ đĩa trong quá trình xử lý dữ liệu.
Dễ dàng bảo trì:
PL/SQL cho phép các lập trình viên phát triển và duy trì các thủ tục và hàm trong cơ sở dữ liệu một cách dễ dàng và hiệu quả. Nó cũng cung cấp các công cụ để tìm và sửa lỗi trong các thủ tục và hàm của ứng dụng.

Sự khác biệt giữa SQL, PL/SQL và T-SQL
Sự khác biệt giữa SQL và PL/SQL
Tính năng | SQL | PL/SQL |
Loại ngôn ngữ | Ngôn ngữ truy vấn cấu trúc | Ngôn ngữ lập trình thủ tục |
Chức năng chính | Thao tác truy vấn và xử lý dữ liệu trong CSDL | Xử lý dữ liệu trong CSDL, lập trình thủ tục và hàm |
Cấu trúc cú pháp | Câu lệnh đơn giản, lệnh SELECT, INSERT, UPDATE, DELETE | Có cấu trúc thủ tục và hàm, nhiều câu lệnh, điều kiện, vòng lặp, xử lý ngoại lệ |
Đối tượng áp dụng | Người quản trị cơ sở dữ liệu, nhà phát triển ứng dụng | Nhà phát triển ứng dụng |
Độ phức tạp | Đơn giản | Phức tạp |
Tính tái sử dụng | Thấp | Cao |
Tính linh hoạt | Thấp | Cao |
Tính bảo mật | Có thể xảy ra lỗ hổng bảo mật nếu không cẩn thận | Có tính năng bảo mật tốt hơn, cung cấp các tính năng bảo mật để đảm bảo tính toàn vẹn của dữ liệu |
Thực thi câu lệnh | Nhanh | Chậm hơn SQL |
Sự khác biệt giữa T-SQL và PL/SQL
Tính năng | T-SQL | PL/SQL |
Loại ngôn ngữ | Ngôn ngữ truy vấn cấu trúc SQL cho Microsoft SQL Server | Ngôn ngữ lập trình thủ tục cho Oracle Database |
Chức năng chính | Thao tác truy vấn và xử lý dữ liệu trong Microsoft SQL Server | Xử lý dữ liệu trong Oracle Database, lập trình thủ tục và hàm |
Cấu trúc cú pháp | Câu lệnh đơn giản, lệnh SELECT, INSERT, UPDATE, DELETE | Có cấu trúc thủ tục và hàm, nhiều câu lệnh, điều kiện, vòng lặp, xử lý ngoại lệ |
Đối tượng áp dụng | Nhà phát triển ứng dụng cho Microsoft SQL Server | Nhà phát triển ứng dụng cho Oracle Database |
Tính phổ biến | Chủ yếu được sử dụng trong môi trường Microsoft | Chủ yếu được sử dụng trong môi trường Oracle |
Độ phức tạp | Đơn giản | Phức tạp |
Tính tái sử dụng | Thấp | Cao |
Tính linh hoạt | Thấp | Cao |
Tính bảo mật | Có tính năng bảo mật tốt, cung cấp các tính năng bảo mật để đảm bảo tính toàn vẹn của dữ liệu | Có tính năng bảo mật tốt hơn, cung cấp các tính năng bảo mật để đảm bảo tính toàn vẹn của dữ liệu |
Kiến trúc của PL/SQL
Ví dụ PL/SQL dưới đây là một biểu diễn hình ảnh của kiến trúc PL/SQL
Kiến trúc PL/SQL chủ yếu bao gồm ba thành phần sau:
- PL/SQL Block
- PL/SQL Engine
- Database Server
PL/SQL Block:
Là một đoạn mã PL/SQL được đặt trong cặp từ khóa BEGIN và END. PL/SQL Block có thể chứa các câu lệnh DDL, DML, DCL và các lệnh điều khiển lưu trữ, ví dụ như IF, LOOP, WHILE, FOR. Các khối PL/SQL có thể được lưu trữ và gọi từ các ứng dụng, hoặc thực thi bởi các trình biên dịch hoặc công cụ quản lý cơ sở dữ liệu.
PL/SQL Engine:
Database Server:

Ưu Nhược điểm của PL/SQL
Ưu điểm
- PL/SQL là một ngôn ngữ lập trình thủ tục mạnh mẽ và linh hoạt, phù hợp với các ứng dụng cần xử lý dữ liệu phức tạp.
- PL/SQL được tích hợp sẵn trong Oracle Database, giúp cho việc phát triển và triển khai các ứng dụng PL/SQL trở nên dễ dàng hơn.
- PL/SQL hỗ trợ các cơ chế để tối ưu hóa hiệu suất và tăng tốc độ thực thi các câu lệnh SQL trong Oracle Database.
- PL/SQL cung cấp các cơ chế để quản lý các lỗi và ngoại lệ xảy ra trong quá trình thực thi, giúp cho việc phát triển và bảo trì các ứng dụng PL/SQL trở nên dễ dàng hơn.
Nhược điểm
- PL/SQL là một ngôn ngữ đặc thù của Oracle Database, không thể sử dụng cho các hệ quản trị cơ sở dữ liệu khác.
- PL/SQL có thể khó học và sử dụng đối với những người mới bắt đầu hoặc không có kinh nghiệm về Oracle Database.
- PL/SQL không hỗ trợ các tính năng như đa kế thừa, đa hình hay các kiểu dữ liệu động, điều này có thể khiến cho việc phát triển một số ứng dụng phức tạp trở nên khó khăn hơn.
Các câu lệnh PL/SQL cơ bản
1. if/then/else
Thực hiện một hành động nếu điều kiện được đưa ra là đúng, hoặc thực hiện một hành động khác nếu điều kiện là sai:
Ví dụ: Kiểm tra giá trị của biến số và in ra thông báo tương ứng
DECLARE
num INTEGER := 7;
BEGIN
IF num > 10 THEN
DBMS_OUTPUT.PUT_LINE(‘Giá trị của biến số lớn hơn 10’);
ELSE
DBMS_OUTPUT.PUT_LINE(‘Giá trị của biến số nhỏ hơn hoặc bằng 10’);
END IF;
END;
2. Loop
Thực hiện một khối chương trình lặp lại cho đến khi một điều kiện được đáp ứng.
Cú pháp:
LOOP
— Do something here
EXIT WHEN <Condition>;
END LOOP;
3. Declare
Ví dụ: Khai báo một biến số nguyên trong PL/SQL
DECLARE
num INTEGER := 10;
BEGIN
NULL;
END;
4. Begin/end
Đánh dấu một khối chương trình PL/SQL.
Ví dụ: In ra thông báo “Hello World!” trong PL/SQL
BEGIN
DBMS_OUTPUT.PUT_LINE(‘Hello World!’);
END;
5. Case
Xác định hành động sẽ được thực hiện dựa trên giá trị của biến hoặc biểu thức.
Ví dụ: Xác định hành động thực hiện dựa trên giá trị của biến số
DECLARE
color CHAR(10) := ‘green’;
BEGIN
CASE color
WHEN ‘red’ THEN DBMS_OUTPUT.PUT_LINE(‘Màu đỏ’);
WHEN ‘green’ THEN DBMS_OUTPUT.PUT_LINE(‘Màu xanh lá cây’);
WHEN ‘blue’ THEN DBMS_OUTPUT.PUT_LINE(‘Màu xanh dương’);
ELSE DBMS_OUTPUT.PUT_LINE(‘Không xác định’);
END CASE;
END;
6. While
Thực hiện một khối chương trình lặp lại cho đến khi một điều kiện không còn đúng.
Ví dụ: In ra các số chẵn từ 2 đến 10 trong PL/SQL
DECLARE
i INTEGER := 2;
BEGIN
WHILE i <= 10 LOOP
DBMS_OUTPUT.PUT_LINE(i);
i := i + 2;
END LOOP;
END;
7. For
Thực hiện một khối chương trình lặp lại cho một tập hợp các giá trị được chỉ định trước.
Ví dụ: In ra các số lẻ từ 1 đến 9 trong PL/SQL
DECLARE
i INTEGER;
BEGIN
FOR i IN 1..9 LOOP
IF i MOD 2 <> 0 THEN
DBMS_OUTPUT.PUT_LINE(i);
END IF;
END LOOP;
END;
8. Cursor
Định nghĩa một con trỏ để duyệt và truy xuất dữ liệu từ một tập hợp kết quả được trả về từ một truy vấn SQL.
Ví dụ: Lấy ra danh sách các khách hàng trong PL/SQL sử dụng con trỏ
DECLARE
CURSOR c1 IS SELECT customer_name FROM customers;
customer_name customers.customer_name%TYPE;
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO customer_name;
EXIT WHEN c1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(customer_name);
END LOOP;
CLOSE c1;
END;
9. Exception
Xử lý các ngoại lệ và thông báo lỗi trong chương trình.
Ví dụ: Xử lý lỗi trong PL/SQL
DECLARE
num1 INTEGER := 10;
num2 INTEGER := 0;
result INTEGER;
BEGIN
BEGIN
result := num1 / num2;
EXCEPTION
WHEN ZERO_DIVIDE THEN
DBMS_OUTPUT.PUT_LINE(‘Không thể chia cho số 0’);
END;
END;
10. Return
Trả về giá trị từ một chương trình hoặc hàm.
Ví dụ: Tính tổng của hai số và trả về kết quả trong PL/SQL
DECLARE
FUNCTION add_numbers(num1 INTEGER, num2 INTEGER) RETURN INTEGER IS
sum INTEGER;
BEGIN
sum := num1 + num2;
RETURN sum;
END;
BEGIN
DBMS_OUTPUT.PUT_LINE(‘Tổng của hai số là: ‘ || add_numbers(10, 20));
END;
Cách sử dụng PL/SQL trong Oracle Database
Để sử dụng PL/SQL trong Oracle Database, bạn có thể làm theo các bước sau:
Bước 1: Mở công cụ PL/SQL Developer hoặc SQL Developer trên máy tính của bạn.

Bước 2: Tạo một chương trình PL/SQL mới


Bước 3: Viết mã PL/SQL của bạn trong trình soạn thảo, bao gồm các cấu trúc như thủ tục, hàm, khối và gói.
Bước 4: Lưu chương trình PL/SQL của bạn và biên dịch nó để kiểm tra lỗi.
Bước 5: Thực thi chương trình PL/SQL bằng cách chạy nó trong công cụ PL/SQL Developer hoặc SQL Developer.


Bước 6: Kiểm tra kết quả và sửa đổi mã nếu cần thiết.
Lưu ý rằng để sử dụng PL/SQL, bạn cần phải có quyền truy cập vào Oracle Database và có kiến thức về cấu trúc cơ bản của ngôn ngữ SQL. Nếu bạn mới bắt đầu, có thể cần tìm hiểu thêm về PL/SQL trước khi bắt đầu viết chương trình.
Các vấn đề thường gặp trong PL/SQL
Cũng giống như bất kỳ ngôn ngữ lập trình nào khác, PL/SQL cũng có thể gặp một số vấn đề. Sau đây là một số vấn đề thường gặp trong PL/SQL:
- Lỗi cú pháp: Đây là vấn đề phổ biến nhất trong PL/SQL. Lỗi cú pháp xảy ra khi ngôn ngữ không thể hiểu được mã lệnh.
- Lỗi thực thi: Lỗi thực thi xảy ra khi một câu lệnh không thể thực thi được. Các nguyên nhân có thể bao gồm giá trị không hợp lệ, truy vấn sai cú pháp hoặc một số lỗi hệ thống.
- Lỗi runtime: Lỗi runtime xảy ra khi một chương trình đang thực thi gặp sự cố. Các nguyên nhân có thể bao gồm bộ nhớ không đủ hoặc tràn số.
- Lỗi xử lý lỗi: PL/SQL cung cấp một cơ chế xử lý lỗi để xử lý các lỗi trong quá trình thực thi. Tuy nhiên, nếu không xử lý các lỗi này đúng cách, chúng có thể gây ra các vấn đề nghiêm trọng.
- Hiệu suất thấp: Nếu không tối ưu hóa mã PL/SQL của bạn, chương trình của bạn có thể chạy chậm. Vấn đề này có thể được giải quyết bằng cách sử dụng các cấu trúc dữ liệu và thuật toán hiệu quả hơn.
- Lỗi cấu trúc dữ liệu: Đôi khi, lỗi cấu trúc dữ liệu có thể xảy ra khi bạn sử dụng các cấu trúc dữ liệu không đúng cách.
- Không đồng bộ: Nếu bạn thực hiện các thao tác cập nhật trên cùng một bảng từ các phiên bản khác nhau của PL/SQL, điều này có thể dẫn đến các lỗi không đồng bộ.
Kết Luận
Như vậy, Oracle PL/SQL là một công nghệ mạnh mẽ, tích hợp sẵn trong Oracle Database, cho phép người dùng tùy chỉnh và mở rộng chức năng của cơ sở dữ liệu. Oracle PL/SQL là một lựa chọn tuyệt vời. Nếu bạn gặp bất kỳ vấn đề gì liên quan đến Oracle PL/SQL, hãy để lại bình luận phía dưới, LANIT sẽ phản hồi sớm nhất có thể để giúp bạn giải quyết vướng mắc.