Chủ Nhật, 19 tháng 9, 2021

Tìm hiểu Procedure trong Oracle

Trong bài này mình sẽ giới thiệu cú pháp và cách sử dụng procedure trong Oracle.

Procedure là gì? Procedure hay còn gọi là thủ tục, nó dùng để gom một nhóm lệnh SQL cùng xử lý một mục đích cụ thẻ nào đó, sau đó đặt cho nó một cái tên và khai bao tham số truyền vào để sau này mỗi khi cần sử dụng thì ta chỉ cần gọi tên và truyền tham số là được.

Mục lục

  • 1. Cú pháp Procedure trong Oracle
  • 2. Ví dụ tạo Procedure trong Oracle
  • 3. Gọi chương trình Procedure trong Oracle
  • 4. Xóa Procedure trong Oracle
  • 5. Lời kết

1. Cú pháp Procedure trong Oracle

Trước tiên mình gửi đến các bạn cú pháp để tạo procedure trong Oracle.

1
2
3
4
5
6
7
8
9
CREATE [OR REPLACE] PROCEDURE procedure_name 
    [ (parameter [,parameter]) ] 
IS 
    [declaration_section] 
BEGIN 
    executable_section 
[EXCEPTION 
    exception_section] 
END [procedure_name];

Trong đó bạn cần quan tâm đến một số lệnh sau:

  • procedure_name là tên của procedure. 
  • [OR REPLACE]: Khai báo tham số này thì nó sẽ xóa procedure có tên trùng với tên của procedure đang chạy
  • [ (parameter [,parameter]) ] là các tham số truyền vào procedure

Mỗi tham số truyền vào được xác định bởi ba loại như sau:

  • IN: Đây là kiểu mặc định, tham số này sẽ là dữ liệu đầu vào
  • OUT: Tham số này sẽ là dữ liệu đầu ra
  • IN OUT: Là tham số  đặc biệt, vừa là đầu vào vừa là đầu ra, và thường thì giá trị tại đầu ra sẽ bị thay đổi.

2. Ví dụ tạo Procedure trong Oracle

Giả sử mình sẽ tạo một bảng user gồm ID và NAME như sau:

1
create table user(id number(10) primary key,name varchar2(100));

Bây giờ mình sẽ viết một thủ tục có nhiệm vụ là thêm mới một record vào bảng User.

Vì bảng user có hai column đó là id và name, vì vậy thủ tục này sẽ có hai tham số.

Vì thủ tục này chỉ là thêm record nên không cần dữ liệu đầu ra, nên chỉ cần hai tham số trên là đủ.

1
2
3
4
5
6
7
create or replace procedure "INSERTUSER"   
    (id IN NUMBER,   
    name IN VARCHAR2)   
is   
begin   
     insert into user values(id,name);   
end;

Khi bạn chạy lệnh này mà chương trình báo "Procedure created." thì tức là bạn đã tạo thành công.

3. Gọi chương trình Procedure trong Oracle

Tạo xong rồi, bây giờ muốn gọi nó để dùng thì làm cách nào? bạn hãy xem cách mà mình gọi thủ tục mà mình đã tạo ở trên như sau:

1
2
3
4
BEGIN   
   insertuser(101,'Rahul'); 
   dbms_output.put_line('record inserted successfully');   
END;

Dòng dbms_output.put_line('record inserted successfully'); chỉ là một lệnh hiển thị tin nhắn.

Chạy lệnh này là bạn đã thêm mới một record thành công.

Và đây là ví dụ với tham số OUT.

1
2
3
4
CREATE OR REPLACE PROCEDURE PROC1(invoicenr IN NUMBER, amnt OUT NUMBER)
AS BEGIN
SELECT AMOUNT INTO amnt FROM INVOICE WHERE INVOICE_NR = invoicenr;
END;

Và cách gọi nó như sau:

1
2
3
4
5
6
DECLARE
amount NUMBER;
BEGIN
PROC1(1000001, amount);
dbms_output.put_line(amount);
END;

4. Xóa Procedure trong Oracle

Nếu bạn muốn xóa một procedure nào đó thì hãy sử dụng lệnh DROP PROCEDURE, nó sẽ giúp giải phóng bộ nhớ cho database, giúp tiết kiệm tài nguyên.

Cú pháp
1
DROP PROCEDURE procedure_name;

Ví dụ
1
DROP PROCEDURE pro1;

5. Lời kết

Như vậy là mình đã giới thiệu xong cách sử dụng đơn giản của procedure trong Oracle, đây là chức năng khá hay nó giúp DBA cung cấp cho lập trình viên những đoạn code SQL ngắn gọn và xúc tích, thay vì nhận cả một đống câu truy vấn thì chỉ nhận một đoạn ngán mà thôi.

=============================
* 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

=============================
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 weblogic, middleware, hoc solaris, hoc linux, hoc aix, unix, oracle oca, oracle ocp, oracle ocm

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master