PL / SQL là ngôn ngữ thủ tục khắc phục những thiếu sót mà Ngôn ngữ truy vấn có cấu trúc gặp phải. Nó là một phần mở rộng của SQL và chúng ta thậm chí có thể sử dụng các truy vấn SQL mà không gặp bất kỳ rắc rối nào trong bất kỳ ứng dụng hoặc chương trình PL / SQL nào. Trong hướng dẫn PL / SQL này, chúng ta sẽ đi qua các khái niệm cơ bản của PL / SQL một cách chi tiết. Các chủ đề sau được đề cập trong bài viết này.
- PL / SQL là gì?
- Tính năng
- PL / SQL so với SQL
- Cấu trúc khối trong PL / SQL
- Các biến PL / SQL
- Hàm Trong PL / SQL
- Thủ tục PL / SQL
- Khối lồng nhau
- Câu lệnh IF
- Tuyên bố CASE
- Câu lệnh lặp
- Câu lệnh lặp trong khi
- Đối với Tuyên bố Vòng lặp
- Xử lý đặc biệt
PL / SQL là gì?
Nó là viết tắt của phần mở rộng ngôn ngữ thủ tục cho ngôn ngữ truy vấn có cấu trúc. Oracle đã tạo ra PL / SQL để mở rộng một số hạn chế của SQL để cung cấp giải pháp toàn diện hơn để xây dựng các ứng dụng quan trọng chạy trên cơ sở dữ liệu oracle.
Tính năng
-
PL / SQL cung cấp chức năng của ngôn ngữ thủ tục như ra quyết định, lặp lại, v.v.
-
Sử dụng một lệnh duy nhất, PL / SQL có thể thực thi một số truy vấn.
-
Chúng tôi cũng có thể sử dụng lại các đơn vị PL / SQL như hàm, trình kích hoạt, thủ tục, v.v. được lưu trữ trong cơ sở dữ liệu sau khi tạo.
-
PL / SQL cũng có một khối xử lý ngoại lệ xử lý các ngoại lệ trong PL / SQL.
-
Cũng có thể kiểm tra lỗi mở rộng bằng PL / SQL
-
Các ứng dụng được viết bằng PL / SQL có thể di động sang phần cứng và hệ điều hành khác được cung cấp oracle phải hoạt động được.
PL / SQL so với SQL
SQL | PL / SQL |
SQL là một truy vấn duy nhất được sử dụng để thực hiện các hoạt động DDL và DML | PL / SQL là một khối mã được sử dụng để xác định toàn bộ chương trình hoặc thủ tục / hàm, v.v. |
Nó không thực sự xác định cách mọi thứ cần được thực hiện, thay vào đó là xác định những gì cần phải hoàn thành | PL / SQL xác định cách mọi thứ cần được thực hiện |
Nó thực thi một câu lệnh duy nhất | Nó thực thi một khối câu lệnh cùng một lúc. |
SQL chủ yếu được sử dụng để thao tác dữ liệu | Mặt khác,PL / SQL được sử dụng để tạo các ứng dụng |
Nó không được chứa mã PL / SQL | Vì là phần mở rộng SQL nên nó có thể chứa mã SQL trong đó |
Cấu trúc khối trong PL / SQL
PL / SQL thường tổ chức mã thành các khối. Khối mã không có tên được gọi là khối ẩn danh. Nó được gọi là khối ẩn danh vì nó không được lưu trong cơ sở dữ liệu oracle. Hãy để chúng tôi xem xét một khối ẩn danh trong PL / SQL.
Các câu lệnh khai báo[DECLARE]; [BEGIN] câu lệnh thực thi; [EXCEPTION] câu lệnh ngoại lệ; END; /
Nhìn vào sơ đồ trên, chúng ta có thể thấy cấu trúc khối được chia thành bốn phần, đó là phần khai báo, phần bắt đầu, phần ngoại lệ và phần kết thúc. Hãy để chúng tôi cố gắng hiểu cách cấu trúc khối hoạt động trong PL / SQL. Trong số tất cả các phần này, phần thực hiện là bắt buộc và phần còn lại là tùy chọn.
-
KHAI BÁO từ khóa được sử dụng cho phần khai báo được sử dụng để khai báo các kiểu dữ liệu và cấu trúc như biến, hàm, v.v.
-
BẮT ĐẦU từ khóa được sử dụng cho phần thực thi. Nó là bắt buộc và chứa tất cả các câu lệnh cần được thực thi. Khối này là nơi định nghĩa logic nghiệp vụ, chúng ta có thể sử dụng cả câu lệnh thủ tục hoặc SQL trong khối này.
-
NGOẠI LỆ từ khóa được sử dụng cho phần ngoại lệ. Nó chứa tất cả các câu lệnh ngoại lệ.
-
HẾT từ khóa đánh dấu phần cuối của khối và dấu gạch chéo ngược ‘/’ cho biết công cụ mà bạn đang sử dụng (Oracle Database Tool) để thực thi khối PL / SQL.
Đây là một ví dụ đơn giản để chỉ ra cách chúng ta có thể sử dụng mã PL / SQL.
BEGIN NULL; END; /
Bây giờ chúng ta đã biết cấu trúc khối hoạt động như thế nào trong PL / SQL, chúng ta hãy hiểu các khía cạnh khác nhau của PL / SQL như khai báo, đặt tên và gán giá trị cho các biến.
Biến PL / SQL
Biến trong PL / SQL về cơ bản là một tên thay đổi hoặc vị trí lưu trữ tạm thời hỗ trợ một kiểu dữ liệu cụ thể. Hãy để chúng tôi xem cách chúng tôi có thể sử dụng các biến trong chương trình PL / SQL.
Quy tắc đặt tên biến thể
PL / SQL tuân theo các quy tắc đặt tên biến sau đây.
-
Biến không được nhiều hơn 31 ký tự
-
Tên của biến phải bắt đầu bằng ký tự ASCII. Vì PL / SQL có phân biệt chữ hoa chữ thường nên một ký tự hoa và một ký tự viết thường sẽ là các biến khác nhau.
-
Sau ký tự đầu tiên, phải có một ký tự đặc biệt ($, _) hoặc bất kỳ số nào.
Quy ước đặt tên
Sử dụng các quy ước đặt tên sau được liệt kê bên dưới để sử dụng các biến.
Tiền tố | Loại Dữ liệu |
v_ | VARCHAR2 |
n_ | NUMBER |
t_ | BẢNG |
r_ | ROW |
d_ | NGÀY |
b_ | BOOLEAN |
Tuyên bố
Hãy cố gắng hiểu cách khai báo biến được thực hiện trong PL / SQL
Phần khai báo bao gồm tên biến theo sau là kiểu dữ liệu và được phân tách bằng dấu chấm phẩy. Sau đây là một ví dụ để cho thấy cách bạn có thể khai báo một biến trong PL / SQL.
DECLARE v_name VARCHAR (25); n_age NUMBER (3); BEGIN NULL; END;
Bạn cũng có thể thêm độ dài của kiểu dữ liệu như chúng ta đã làm trong ví dụ trên.
Neo
Về cơ bản, liên kết đề cập đến việc sử dụng từ khóa% TYPE để khai báo một biến có kiểu dữ liệu được liên kết với kiểu dữ liệu của cột của một cột cụ thể trong bảng.
Hãy xem một ví dụ để hiểu điều này. Giả sử chúng ta có một bảng EMPLOYEES, chúng ta có thể sử dụng các neo theo cách sau.
DECLARE v_name EMPLOYEE.NAME% TYPE; n_age EMPLOYEE.AGE% TYPE; BEGIN NULL; END; /
Nhiệm vụ
Việc gán biến khá dễ dàng, chúng ta có thể sử dụng toán tử gán để gán giá trị cho một biến. Ví dụ sau đây cho thấy cách chúng ta có thể gán giá trị cho một biến.
DECLARE v_name VARCHAR (20); n_course VARCHAR (10); BEGIN v_name ="edureka"; v_course ="sql"; HẾT; /
Khởi tạo
Chúng ta cũng có thể khởi tạo một giá trị cho biến trong phần khai báo. Ví dụ sau đây cho thấy cách chúng ta có thể khởi tạo các giá trị cho một biến.
DECLAREv_name VARCHAR (20) ="edureka"; n_course VARCHAR (10) ="sql"; BEGIN NULL; END; /
Bây giờ chúng ta biết cách chúng ta có thể làm việc với các biến, hãy cố gắng hiểu cách chúng ta sẽ sử dụng các hàm trong PL / SQL.
Hàm trong PL / SQL
Một hàm trong PL / SQL về cơ bản là một khối được đặt tên trả về một giá trị. Nó còn được gọi là chương trình con hoặc chương trình con, cú pháp sau đây cho thấy cách chúng ta có thể sử dụng các hàm trong PL / SQL.
CREATE [HOẶC THAY THẾ] FUNCTION tên_hàm [(tham số_1 [IN] [OUT] loại dữ liệu, tham số_2 [IN] [OUT] loại dữ liệu, tham số_N [IN] [OUT] loại dữ liệu] RETURN return_data_type LÀ BEGIN câu lệnh return return_data_type; EXCEPTION END; /
Trước hết, bạn phải chỉ định tên hàm sau từ khóa. Tên hàm phải bắt đầu bằng một động từ. Một hàm có thể không có, một hoặc nhiều tham số mà chúng tôi chỉ định trong tham số. Chúng tôi phải chỉ định kiểu dữ liệu của từng tham số một cách rõ ràng, sau đó đi đến chế độ có thể là một trong hai điều sau.
-
TRONG - Tham số IN là tham số chỉ đọc.
-
HẾT - Đây là một tham số chỉ ghi
-
HẾT - Tham số IN OUT vừa là tham số đọc-ghi.
Đây là một ví dụ đơn giản để cho thấy cách chúng tôi sử dụng các hàm trong PL / SQL.
TẠO HOẶC THAY THẾ CHỨC NĂNG try_parse (iv_number TRONG VARCHAR2) QUAY LẠI SỐ ISBEGIN RETURN to_number (iv_number); NGOẠI LỆ KHI những người khác QUAY LẠI KHÔNG; HẾT;
Gọi một chức năng
Chúng ta hãy thử gọi hàm mà chúng ta đã thực hiện trong một khối ẩn danh trong ví dụ sau.
ĐẶT SERVEROUTPUT TRÊN KÍCH THƯỚC 1000000; KHAI BÁO n_x số; số n_y; số n_z; BEGIN n_x:=try_parse ('256'); n_y:=try_parse ('29 .72'); n_z:=try_parse ('pqrs'); DBMS_OUTPUT.PUT_LINE (n_x); DBMS_OUTPUT.PUT_LINE (n_y); DBMS_OUTPUT.PUT_LINE (n_z); HẾT; /
Chúng ta cũng có thể gọi hàm trong câu lệnh SELECT. Bây giờ chúng ta đã biết cách sử dụng các hàm trong PL / SQL, hãy cố gắng hiểu cách chúng ta làm việc với các thủ tục trong PL / SQL.
Quy trình PL / SQL
Một thủ tục về cơ bản là một khối thực hiện một nhiệm vụ cụ thể. Sử dụng một thủ tục, chúng ta có thể bao bọc hoặc đóng gói logic nghiệp vụ phức tạp và sử dụng lại chúng trong cả lớp ứng dụng và cơ sở dữ liệu.
Chúng ta hãy xem một ví dụ đơn giản để hiểu cách hoạt động của thủ tục trong PL / SQL
TẠO HOẶC THAY THẾ THỦ TỤC điều chỉnh (in_employee_id IN EMPLOYEES.EMPLOYEE_ID% TYPE, in_percent IN NUMBER) ISBEGIN - cập nhật tiền lương của nhân viên CẬP NHẬT nhân viên SET lương =lương + lương * in_percent / 100 WHERE worker_id =in_employee_preid; END;Trong ví dụ trên, chúng ta có hai tham số, thủ tục điều chỉnh lương theo tỷ lệ phần trăm cho trước và từ khóa UPDATE cập nhật giá trị trong thông tin lương.
Tiêu đề thủ tục
Phần trước từ khóa IS được gọi là tiêu đề thủ tục. Sau đây là một vài gợi ý mà người ta phải quen thuộc khi làm việc với các thủ tục.
-
lược đồ - Đây là tên tùy chọn của lược đồ chứa thủ tục.
-
name - Tên của thủ tục phải bắt đầu bằng một động từ.
-
tham số - Đây là danh sách các tham số tùy chọn.
-
AUTHID - Nó xác định liệu thủ tục sẽ thực thi với đặc quyền của người dùng hiện tại hay chủ sở hữu ban đầu của thủ tục.
Cơ quan thủ tục
Mọi thứ đứng sau từ khóa IS được gọi là thân thủ tục. Chúng ta có các câu lệnh khai báo, ngoại lệ và thực thi trong phần thân thủ tục. Không giống như hàm, từ khóa RETURN trong một thủ tục được sử dụng để tạm dừng việc thực thi và trả lại quyền điều khiển cho người gọi.
Gọi một thủ tục
Hãy để chúng tôi xem cách chúng tôi có thể gọi một thủ tục trong PL / SQL.
EXEC procedure_name (param1, param2… paramN);
Chúng ta có thể gọi các thủ tục không có tham số chỉ bằng cách sử dụng từ khóa EXEC và tên thủ tục. Bây giờ chúng ta đã biết cách chúng ta có thể làm việc với các thủ tục, chúng ta hãy cố gắng hiểu cách các khối lồng nhau được sử dụng trong PL / SQL.
Khối lồng nhau
Một khối lồng nhau không là gì khác ngoài sự kết hợp của một hoặc nhiều khối PL / SQL để kiểm soát tốt hơn việc thực thi và xử lý đặc biệt cho chương trình.
Đây là một ví dụ đơn giản về một khối lồng nhau.
ĐẶT SERVEROUTPUT TRÊN KÍCH THƯỚC 1000000; KHAI BÁO n_emp_id NHÂN VIÊN.EMPLOYEE_ID% TYPE:=&emp_id1; BẮT ĐẦU KHAI BÁO n_emp_id staff.employee_id% TYPE:=&emp_id2; v_tên nhân viên.first_name% TYPE; BẮT ĐẦU CHỌN first_name VÀO v_name TỪ các nhân viên TẠI ĐÂY worker_id =n_emp_id; DBMS_OUTPUT.PUT_LINE ('Tên nhân viên' || n_emp_id || 'is' || v_name); NGOẠI LỆ KHI no_data_found THÌ DBMS_OUTPUT.PUT_LINE ('Nhân viên' || n_emp_id || 'không tìm thấy'); HẾT; HẾT; /
Khối PL / SQL bên ngoài trong ví dụ trên được gọi là khối mẹ hoặc khối bao quanh, khối bên trong, mặt khác, được gọi là khối con hoặc khối khối kèm theo.
Bạn không nên sử dụng các biến có cùng tên trong cả hai khối vì trong quá trình thực thi, biến khối con sẽ ghi đè lên biến khối mẹ. Điều này xảy ra vì PL / SQL ưu tiên đầu tiên cho biến bên trong khối của chính nó.
Nhãn khối
Chúng tôi có thể khắc phục sự cố này với nhãn khối giúp chúng tôi tạo tham chiếu đến các biến bên trong các khối bằng cách sử dụng nhãn.
Dưới đây là một ví dụ đơn giản để chỉ ra cách chúng ta có thể sử dụng nhãn khối.
<> DECLARE ... BEGIN ... END;
Sử dụng nhãn khối giúp cải thiện khả năng đọc của mã, kiểm soát tốt hơn và tạo tham chiếu đến các khối. Bây giờ chúng ta đã biết cách chúng ta có thể làm việc với các khối lồng nhau, hãy thử tìm hiểu cách thức hoạt động của IF STATEMENT trong PL / SQL.
Câu lệnh IF
PL / SQL có ba THỐNG KÊ NẾU
-
IF-THEN - Đây là ĐIỀU KHOẢN NẾU đơn giản nhất nếu điều kiện đúng thì các câu lệnh sẽ thực thi, nếu điều kiện sai, nó không có tác dụng gì.
-
IF-THEN-ELSE - Trong điều này, mệnh đề ELSE được thêm vào cho một chuỗi các câu lệnh thay thế.
-
IF-THEN-ELSEIF - Nó cho phép chúng tôi thực hiện nhiều điều kiện thử nghiệm theo trình tự.
Cú pháp IF-THEN
IF điều kiện THEN chuỗi_của_statements; KẾT THÚC IF;
Cú pháp IF-THEN-ELSE
IF điều kiện THEN sequence_of_if_statements; ELSE chuỗi_of_else_statements; END IF;
Cú pháp IF-THEN-ELSEIF
IF condition1 THEN sequence_of_statements1ELSIF condition2 THEN sequence_of_statements2ELSE serial_of_statements3END IF;
Bây giờ chúng ta đã hoàn thành với BÁO CÁO IF, chúng ta hãy xem xét câu lệnh CASE trong PL / SQL.
Tuyên bố CASE
Câu lệnh CASE về cơ bản giúp thực hiện một chuỗi câu lệnh dựa trên bộ chọn. Trong trường hợp này, một bộ chọn có thể là bất cứ thứ gì, nó có thể là một biến, hàm hoặc một biểu thức đơn giản. Đây là một ví dụ đơn giản để hiển thị cú pháp của câu lệnh CASE trong PL / SQL.
[<>] TRƯỜNG HỢP [TRUE | bộ chọn] WHEN biểu_thức1 THEN_số_thể_tử1; WHEN biểu_thức2 THEN chuỗi_của_câu2; ... WHEN biểu_thứcN THEN_số_thể_tửN; [ELSE serial_of_statementsN + 1;] KẾT THÚC TRƯỜNG HỢP [tên_mạch];
Trong cú pháp trên, sau từ khóa CASE sẽ xuất hiện bộ chọn. PL / SQL sẽ đánh giá bộ chọn chỉ một lần để xác định câu lệnh nào cần được thực thi.
Tiếp theo là bộ chọn là từ khóa WHEN. Nếu biểu thức thỏa mãn bộ chọn thì câu lệnh tương ứng sau từ khóa THEN sẽ được thực thi.
Bây giờ chúng ta đã biết cách sử dụng câu lệnh CASE, hãy cố gắng hiểu cách chúng ta sẽ sử dụng các câu lệnh lặp trong PL / SQL.
Tuyên bố vòng lặp
Câu lệnh lặp trong PL / SQL là một câu lệnh lặp cho phép bạn thực hiện một chuỗi câu lệnh nhiều lần. Đây là một ví dụ đơn giản để hiển thị cú pháp của câu lệnh lặp trong PL / SQL.
LOOP trình tự_của_statements; KẾT THÚC LOOP;
Phải có ít nhất một câu lệnh thực thi ở giữa từ khóa LOOP và END LOOP.
Lặp lại với Tuyên bố EXIT
Câu lệnh EXIT và EXIT khi cho phép bạn thoát khỏi vòng lặp. Câu lệnh EXIT WHEN kết thúc vòng lặp có điều kiện trong khi EXIT kết thúc việc thực thi một cách vô điều kiện.
LOOP ... EXIT WHEN condition; END LOOP;
Nhãn vòng lặp
Nhãn vòng lặp được sử dụng để xác định tên của biến bộ đếm vòng lặp khi được sử dụng trong một vòng lặp lồng nhau. Sau đây là cú pháp của nhãn vòng lặp.
<
Bây giờ chúng ta đã biết cách chúng ta có thể sử dụng các câu lệnh vòng lặp, hãy cùng xem các câu lệnh vòng lặp while để hiểu rõ hơn.
Tuyên bố vòng lặp trong khi
Chúng ta có thể sử dụng câu lệnh lặp WHILE khi số lần thực thi không được xác định cho đến khi quá trình thực thi bắt đầu. Cú pháp sau được sử dụng cho câu lệnh lặp WHILE trong PL / SQL.
WHILE conditionLOOP sequence_of_statements; END LOOP;
Điều kiện trong cú pháp là giá trị boolean hoặc biểu thức được đánh giá là TRUE, FALSE hoặc NULL. Nếu điều kiện là TRUE, các câu lệnh sẽ được thực thi, nếu nó là FALSE, việc thực thi sẽ dừng lại và điều khiển chuyển sang câu lệnh thực thi tiếp theo.
Bây giờ chúng ta đã biết cách sử dụng câu lệnh vòng lặp WHILE, hãy cùng xem qua câu lệnh vòng lặp FOR.
Đối với Tuyên bố Vòng lặp
Câu lệnh lặp FOR trong PL / SQL cho phép chúng ta thực hiện một chuỗi câu lệnh trong một số lần xác định. Sau đây là cú pháp để sử dụng câu lệnh vòng lặp FOR trong PL / SQL
FOR loop_counter IN [REVERSE] low_bound .. Higher_boundLOOP chuỗi_của_statements; END LOOP;
PL / SQL tự động tạo loop_counter biến cục bộ với kiểu dữ liệu INTEGER cho vòng lặp để bạn không phải khai báo nó một cách rõ ràng. Giới hạn dưới..higherbound là phạm vi mà vòng lặp lặp lại. Ngoài ra, bạn phải có ít nhất một câu lệnh thực thi giữa các từ khóa LOOP và END LOOP.
Bây giờ chúng ta đã biết cách sử dụng các câu lệnh lặp trong PL / SQL, hãy cùng xem cách xử lý đặc biệt trong PL / SQL.
Xử lý đặc biệt
Trong PL / SQL, bất kỳ loại lỗi nào cũng được coi là ngoại lệ. Một ngoại lệ có thể được coi là một điều kiện đặc biệt có thể thay đổi hoặc thay đổi luồng thực thi. Trong PL / SQL, có hai loại ngoại lệ.
-
Ngoại lệ Hệ thống - Nó được nâng lên theo thời gian chạy PL / SQL khi nó phát hiện ra lỗi.
-
Ngoại lệ do Lập trình viên Xác định - Các ngoại lệ này được lập trình viên xác định trong một ứng dụng cụ thể.
Xác định một ngoại lệ
Một ngoại lệ trong PL / SQL phải được khai báo trước khi nó có thể được đưa ra. Chúng tôi có thể xác định ngoại lệ bằng cách sử dụng từ khóa EXCEPTION giống như chúng tôi đã thực hiện trong ví dụ bên dưới.
EXCEPTION_NAME EXCEPTION;
Để đưa ra một ngoại lệ, chúng tôi sử dụng từ khóa RAISE.
RAISE EXCEPTION_NAME;
Đó là tất cả về PL / SQL, tôi hy vọng bài viết này sẽ giúp bạn thêm giá trị vào kiến thức của mình. Để biết thêm thông tin về SQL hoặc Cơ sở dữ liệu, bạn có thể tham khảo danh sách đọc toàn diện của chúng tôi tại đây: Cơ sở dữ liệu Edureka .
Nếu bạn muốn được đào tạo có cấu trúc về MySQL, thì hãy xem Đào tạo chứng chỉ MySQL DBA của chúng tôi đi kèm với đào tạo trực tiếp do người hướng dẫn và trải nghiệm dự án thực tế. Khóa đào tạo này sẽ giúp bạn hiểu sâu về MySQL và giúp bạn đạt được thành thạo về chủ đề này.
Bạn có câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần nhận xét của ” Hướng dẫn PL / SQL ”Và tôi sẽ liên hệ lại với bạn.