Oracle PL/SQL Create Procedure

Hướng dẫn tạo Procedure trong Oracle Database.Trong hướng dẫn này chúng tôi sẽ hướng dẫn các bạn hiểu về Procedure là gì và cách tạo Procedure trong Oracle Database.

1.Procedure trong Oracle là gì?
2.Cách tạo thủ tục Procedure trong Oracle PL/SQL.
3.Cách test thủ tục Procedure trong Oracle PL/SQL
4.Cách Debug thủ tục Procedure trong Oracle PL/SQL
5.Cách sửa và Edit thủ tục Procedure trong Oracle PL/SQL.
6.Cách xóa thủ tục Procedure trong Oracle PL/SQL.

 

1.Procedure trong Oracle là gì?

- Procedure trong Oracle có nghĩa là thủ tục trong cơ sở dữ liệu Oracle.
- Thủ tục (Procedure) là một chương trình con hay một mô-đun, bao gồm các lệnh nhằm thực hiện một chức năng hoặc một nhiệm vụ cụ thể nào đó của chương trình.
- Thủ tục Procedure có thể tạo ở bên trong Schema hoặc trong Package.
- Thủ tục Procedure không trả về giá trị như Hàm Function. Hàm Fucntion trả về giá trị.
- Thủ tục Procedure chỉ được thực thi khi nó được gọi.


2.Cách tạo Procedure trong Oracle PL/SQL.

Cú pháp tạo thủ tục Procedure trong Oracle như sau:

Ví dụ 

CREATE [OR REPLACE] PROCEDURE  procedure_name
    ( parameters

IS
    [declaration_section]

BEGIN
    [executable_section]

EXCEPTION
    [exception_section]

END procedure_name;

Giải thích:

-    CREATE [OR REPLACE] PROCEDURE : là lệnh tạo thủ tục Procedure.
-    procedure_name: là tên của thủ tục mà bạn muốn tạo.
-    parameters: là danh sách các tham số.Tham số có các loại tham số như: IN, OUT, INOUT.

+ Tham số IN là chỉ đọc. Bạn có thể tham chiếu một tham số IN bên trong một thủ tục, nhưng bạn không thể thay đổi giá trị của nó. Oracle sử dụng IN làm chế độ mặc định. Điều đó có nghĩa là nếu bạn không chỉ định rõ ràng chế độ cho một tham số, thì Oracle sẽ sử dụng chế độ IN.

+Tham số OUT là tham số mà bạn muốn trả giá trị ra ngoài. Một tham số OUT có thể ghi được. Thông thường, bạn đặt giá trị trả về cho tham số OUT và trả lại giá trị đó cho chương trình gọi. 

+Tham số INOUT là tham số bạn có thể đọc truyền vào giá trị và có thể ghi lấy ra giá trị. Một tham số INOUT có thể đọc và ghi được. Thủ tục có thể đọc và sửa đổi nó.

- [declaration_section] : là phần khai báo các tham số, biến.

- [executable_section] : là phần thực hiện các lệnh và khối lệnh cửa chương trình.

- [exception_section] : là phần ngoại lệ, thông báo các lỗi ngoại lệ của thủ tục.

 

Giả sử chúng ta cần tạo một thủ tục Procedure trong PL/SQL để insert thêm thông tin của nhân viên vào cơ sở dữ liệu Oracle.

Ví dụ các bước tạo thủ tục Procedure để insert dữ liệu trong Oracle như sau:

-Bước 1: Tạo mới thủ tục Procedure trong PL/SQL Developer

-Bước 2: Nhập tên thủ tục và tham số, các tham số bạn có thể viết sau.

-Bước 3: Thủ tục đã được PL/SQL Developer tạo ra. Tuy nhiên bạn cần sửa lại danh sách tham số, và viết code cho thủ tục này theo ý của bạn.

-Bước 4: Sửa và viết thủ tục Procedure như sau:

Ví dụ 

--Procedure Insert Data-----
create or replace procedure p_Nhanvien_Insert(
  pv_NhanvienName in varchar2,
  pv_NhanvienAge in number,
  pv_NhanvienBirth in Date,
  pv_NhanvienPhone in varchar2,
  pv_NhanvienCCCD in varchar2,
  pv_NhanvienAddress in varchar2,
  pv_NhanvienGender in varchar2,
  pv_NhanvienSalary in number,
  pv_NhanvienDept in int,
  pv_Restult out varchar2
) is
--Khai bao bien 
pv_Count integer := 0;
begin
  pv_Restult := '';
  --Xu ly check du lieu
  select count(*) into pv_Count from HR.NHANVIEN n where n.nhanviencccd = pv_NhanvienCCCD ;
  if pv_Count > 0 then
    pv_Restult := 'The CCCD number was exited';
    return;
  end if;
  
  -- Thuc hien insert du lieu
  Insert into HR.NHANVIEN(NhanvienID,NhanvienName, NhanvienAge, NhanvienBirth, NhanvienPhone, NhanvienCCCD, NhanvienAddress, NhanvienGender, NhanvienSalary,DEPARTMENTID )
  VALUES(HR.SEQ_NHANVIEN.NEXTVAL, pv_NhanvienName, pv_NhanvienAge, pv_NhanvienBirth, pv_NhanvienPhone, pv_NhanvienCCCD, pv_NhanvienAddress, pv_NhanvienGender, pv_NhanvienSalary, pv_NhanvienDept  ) ;
  pv_Restult := 'OK';
   
exception
  when others then
    pv_Restult := 'Error Exception'
  
end p_Nhanvien_Insert;

Lưu ý: HR.SEQ_NHANVIEN.NEXTVAL là sequences, bạn cần tạo sequences cho mã nhân viên tăng dần. 

-Bước 5: Nhấn vào biểu tượng Execute hoặc F8 để biên dịch thủ tục. Trong trường hợp nếu có lỗi code, PL/SQL Developer sẽ thông báo cho bạn. 

 

3.Cách Test thủ thục Procedure trong PL/SQL Developer.

- Nhấn chuột phải vào thủ tục P_NHANVIEN_INSERT sau đó chọn Test.

- Nhập giá trị cho các tham số đầu vào.

- Thực thi chạy thủ tục và xem kết quả.