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.
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.
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:
Bài viết này được đăng tại [kiso.vn]
- 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:
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à đủ.
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:
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.
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:
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.
DROP PROCEDURE procedure_name;
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.
Bài viết liên quan
[CSF-2] Một số thiết lập CSF, LFD
Hôm nay mình sẽ thực hiện một số thiết lập trên CSF Mở file config để sửa đổi một số tính năng dưới /etc/csf/csf.conf Nội dung chính1. Cú pháp Procedure trong Oracle2. Ví dụ tạo...
[CSF-1] Tăng bảo mật Server với ConfigServer Firewall (CSF)
Nội dung chính1. Cú pháp Procedure trong Oracle2. Ví dụ tạo Procedure trong Oracle3. Gọi chương trình Procedure trong Oracle4. Xóa Procedure trong Oracle5. Lời kết1. Khái niệm CSF: CSF (ConfigServer & Firewall) là một...
Sử dụng SSH Key với Gitlab và Github
Bài viết này mình sẽ hướng dẫn các bạn tạo ssh key cho Gitlab và Github SSH là gì? Secure Socket Shell là một giao thức mạng dùng để thiết lập kết nối mạng một...
Directory traversal vulnerabilities (phần 4)
Nội dung chính1. Cú pháp Procedure trong Oracle2. Ví dụ tạo Procedure trong Oracle3. Gọi chương trình Procedure trong Oracle4. Xóa Procedure trong Oracle5. Lời kếtV. Phân tích và khai thác các lỗ hổng Directory...
Directory traversal vulnerabilities (phần 3)
Nội dung chính1. Cú pháp Procedure trong Oracle2. Ví dụ tạo Procedure trong Oracle3. Gọi chương trình Procedure trong Oracle4. Xóa Procedure trong Oracle5. Lời kếtV. Phân tích và khai thác các lỗ hổng Directory...
Directory traversal vulnerabilities (phần 2)
Nội dung chính1. Cú pháp Procedure trong Oracle2. Ví dụ tạo Procedure trong Oracle3. Gọi chương trình Procedure trong Oracle4. Xóa Procedure trong Oracle5. Lời kếtIII. Vì sao lỗ hổng Directory traversal xuất hiện? Với...