Trong chương này, chúng ta sẽ thảo luận về các Thủ tục trong PL/SQL. Chương trình con là một đơn vị / mô-đun chương trình thực hiện một nhiệm vụ cụ thể. Các chương trình con này được kết hợp với nhau để tạo thành các chương trình lớn hơn. Về cơ bản, đây được gọi là 'Thiết kế mô-đun'. Một chương trình con có thể được gọi bởi một chương trình con hoặc chương trình khác được gọi là chương trình gọi.
Một chương trình con có thể được tạo -
Ở cấp schema
Bên trong một gói
Bên trong một khối PL/SQL
Ở cấp độ lược đồ, chương trình con là một chương trình con độc lập . Nó được tạo bằng câu lệnh CREATE PROCEDURE hoặc câu lệnh CREATE FUNCTION. Nó được lưu trữ trong cơ sở dữ liệu và có thể bị xóa bằng câu lệnh DROP PROCEDURE hoặc DROP FUNCTION.
Một chương trình con được tạo bên trong một gói là một chương trình con được đóng gói . Nó được lưu trữ trong cơ sở dữ liệu và chỉ có thể bị xóa khi gói bị xóa bằng câu lệnh DROP PACKAGE. Chúng ta sẽ thảo luận về các gói trong chương 'PL/SQL - Gói' .
Chương trình con PL/SQL được đặt tên là các khối PL/SQL có thể được gọi với một tập các tham số. PL/SQL cung cấp hai loại chương trình con:
Hàm (function) - Các chương trình con này trả về một giá trị duy nhất; chủ yếu được sử dụng để tính toán và trả về một giá trị.
Thủ tục (procedure) - Các chương trình con này không trực tiếp trả về một giá trị; chủ yếu được sử dụng để thực hiện một hành động.
Chương này sẽ trình bày các khía cạnh quan trọng của một thủ tục PL/SQL . Chúng ta sẽ thảo luận về hàm PL/SQL trong chương tiếp theo.
Các phần của chương trình con PL/SQL
Mỗi chương trình con PL/SQL có một tên và cũng có thể có một danh sách tham số. Giống như các khối PL/SQL ẩn danh, các khối được đặt tên cũng sẽ có ba phần sau:
Tạo một thủ tục
Một thủ tục được tạo bằng câu lệnh CREATE OR REPLACE PROCEDURE . Cú pháp đơn giản cho câu lệnh CREATE OR REPLACE PROCEDURE như sau:
CREATE [OR REPLACE] PROCEDURE procedure_name
[(parameter_name [IN | OUT | IN OUT] type [, ...])]
{IS | AS}
BEGIN
< procedure_body >
END procedure_name;
Ở đâu,
procedure-name chỉ định tên của thủ tục.
Tùy chọn [HOẶC THAY THẾ] cho phép sửa đổi quy trình hiện có.
Danh sách tham số tùy chọn chứa tên, chế độ và các loại tham số. IN đại diện cho giá trị sẽ được truyền từ bên ngoài và OUT đại diện cho tham số sẽ được sử dụng để trả về một giá trị bên ngoài thủ tục.
thân thủ tục chứa phần thực thi.
Từ khóa AS được sử dụng thay cho từ khóa IS để tạo một quy trình độc lập.
Thí dụ
Ví dụ sau tạo một thủ tục đơn giản hiển thị chuỗi 'Hello World!' trên màn hình khi thực thi.
CREATE OR REPLACE PROCEDURE greetings
AS
BEGIN
dbms_output.put_line('Hello World!');
END;
/
Khi đoạn mã trên được thực thi bằng lời nhắc SQL, nó sẽ tạo ra kết quả sau:
Procedure created.
Thực hiện một quy trình độc lập
Một thủ tục độc lập có thể được gọi theo hai cách:
Sử dụng từ khóa EXECUTE
Gọi tên của thủ tục từ một khối PL/SQL
Thủ tục có tên 'lời chào' ở trên có thể được gọi với từ khóa EXECUTE là -
EXECUTE greetings;
Cuộc gọi trên sẽ hiển thị -
Hello World
PL/SQL procedure successfully completed.
Thủ tục cũng có thể được gọi từ một khối PL/SQL khác -
BEGIN
greetings;
END;
/
Cuộc gọi trên sẽ hiển thị -
Hello World
PL/SQL procedure successfully completed.
Xóa một thủ tục độc lập
Một thủ tục độc lập bị xóa với câu lệnh DROP PROCEDURE . Cú pháp để xóa một thủ tục là:
DROP PROCEDURE procedure-name;
Bạn có thể bỏ quy trình chào hỏi bằng cách sử dụng câu lệnh sau:
DROP PROCEDURE greetings;
Chế độ tham số trong chương trình con PL/SQL
Bảng sau liệt kê các chế độ tham số trong chương trình con PL/SQL:
Chế độ IN & OUT Ví dụ 1
Chương trình này tìm giá trị nhỏ nhất của hai giá trị. Ở đây, thủ tục nhận hai số bằng chế độ IN và trả về giá trị tối thiểu của chúng bằng cách sử dụng các tham số OUT.
DECLARE
a number;
b number;
c number;
PROCEDURE findMin(x IN number, y IN number, z OUT number) IS
BEGIN
IF x < y THEN
z:= x;
ELSE
z:= y;
END IF;
END;
BEGIN
a:= 23;
b:= 45;
findMin(a, b, c);
dbms_output.put_line(' Minimum of (23, 45) : ' || c);
END;
/
Khi đoạn mã trên được thực thi tại dấu nhắc SQL, nó tạo ra kết quả sau:
Minimum of (23, 45) : 23
PL/SQL procedure successfully completed.
Chế độ IN & OUT Ví dụ 2
Thủ tục này tính bình phương giá trị của một giá trị được truyền vào. Ví dụ này cho thấy cách chúng ta có thể sử dụng cùng một tham số để chấp nhận một giá trị và sau đó trả về một kết quả khác.
DECLARE
a number;
PROCEDURE squareNum(x IN OUT number) IS
BEGIN
x := x * x;
END;
BEGIN
a:= 23;
squareNum(a);
dbms_output.put_line(' Square of (23): ' || a);
END;
/
Khi đoạn mã trên được thực thi tại dấu nhắc SQL, nó tạo ra kết quả sau:
Square of (23): 529
PL/SQL procedure successfully completed.
Phương pháp truyền tham số
Các tham số thực tế có thể được chuyển theo ba cách:
Ký hiệu vị trí
Ký hiệu được đặt tên
Ký hiệu hỗn hợp
Ký hiệu vị trí
Trong ký hiệu vị trí, bạn có thể gọi thủ tục là -
findMin(a, b, c, d);
Trong ký hiệu vị trí, tham số thực tế đầu tiên được thay thế cho tham số hình thức đầu tiên; tham số thực tế thứ hai được thay thế cho tham số chính thức thứ hai, v.v. Vì vậy, a được thay thế cho x, b được thay thế cho y, c được thay thế cho z và d được thay thế cho m .
Ký hiệu được đặt tên
Trong ký hiệu được đặt tên, tham số thực được liên kết với tham số chính thức bằng ký hiệu mũi tên (=>) . Lệnh gọi thủ tục sẽ giống như sau:
findMin(x => a, y => b, z => c, m => d);
Ký hiệu hỗn hợp
Trong ký hiệu hỗn hợp, bạn có thể kết hợp cả hai ký hiệu trong cuộc gọi thủ tục; tuy nhiên, ký hiệu vị trí phải đứng trước ký hiệu được đặt tên.
Cuộc gọi sau là hợp pháp -
findMin(a, b, c, m => d);
Tuy nhiên, điều này không hợp pháp:
findMin(x => a, b, c, d);
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile: 0902912888
⚡️ Skype: tranbinh48ca
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội
=============================
PL/SQL, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,khóa học pl/sql, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, middleware, hoc solaris, hoc linux, hoc aix, unix, securecrt, xshell, mobaxterm, putty