× Giới thiệu Lịch khai giảng Tin tức Sản phẩm học viên

Oracle Function - Tìm hiểu về Oracle Function trong Java

12/03/2024 01:32

Oracle function là một chương trình con được sử dụng để trả về một giá trị duy nhất. Bạn phải khai báo và định nghĩa một hàm trước khi gọi nó. 

Chức năng Oracle

Hàm là một chương trình con được sử dụng để trả về một giá trị duy nhất. Bạn phải khai báo và định nghĩa một hàm trước khi gọi nó. Nó có thể được khai báo và xác định cùng một lúc hoặc có thể được khai báo trước và xác định sau trong cùng một khối.

Hàm TẠO trong Oracle

CREATE [OR REPLACE] FUNCTION function_name  
   [ (parameter [,parameter]) ]  
RETURN return_datatype  
IS | AS  
 [declaration_section]  
BEGIN  
   executable_section  
[EXCEPTION  
   exception_section]  
END [function_name];  

Bạn phải xác định một số tham số trước khi tạo một thủ tục hoặc hàm. Các thông số này được

  • IN: Đây là tham số mặc định. Nó chuyển giá trị cho chương trình con.
  • OUT: Nó phải được chỉ định. Nó trả về một giá trị cho người gọi.
  • IN OUT: Phải được chỉ định. Nó chuyển một giá trị ban đầu cho chương trình con và trả về giá trị được cập nhật cho người gọi.

Ví dụ về hàm Oracle

Hãy xem một ví dụ đơn giản để tạo một hàm .

create or replace function adder(n1 in number, n2 in number)    
return number    
is     
n3 number(8);    
begin    
n3 :=n1+n2;    
return n3;    
end;    
/    

Giờ thì viết 1 chương trình khác để call function

  1. DECLARE    
  2.    n3 number(2);    
  3. BEGIN    
  4.    n3 := adder(11,22);    
  5.    dbms_output.put_line('Addition is: ' || n3);    
  6. END;    
  7. /    

Output:

Addition is: 33
Statement processed.
0.05 seconds

Một ví dụ về hàm Oracle khác

Hãy lấy một ví dụ để chứng minh Cách khai báo, xác định và gọi một hàm PL/SQL đơn giản sẽ tính toán và trả về giá trị tối đa của hai giá trị.

DECLARE  
   a number;  
   b number;  
   c number;  
FUNCTION findMax(x IN number, y IN number)   
RETURN number  
IS  
    z number;  
BEGIN  
   IF x > y THEN  
      z:= x;  
   ELSE  
      Z:= y;  
   END IF;  
  
   RETURN z;  
END;   
BEGIN  
   a:= 23;  
   b:= 45;  
  
   c := findMax(a, b);  
   dbms_output.put_line(' Maximum of (23,45): ' || c);  
END;  
/  

 

Output:

Maximum of (23,45): 45
Statement processed.
0.02 seconds

Ví dụ về hàm Oracle sử dụng bảng

Hãy lấy một bảng khách hàng. Ví dụ này minh họa việc tạo và gọi một hàm độc lập. Hàm này sẽ trả về tổng số KHÁCH HÀNG trong bảng khách hàng.

Customers
Id Name Department Salary
1 alex web developer 35000
2 ricky program developer 45000
3 mohan web designer 35000
4 dilshad database manager 44000

Create Function:

 
  1. CREATE OR REPLACE FUNCTION totalCustomers  
  2. RETURN number IS  
  3.    total number(2) := 0;  
  4. BEGIN  
  5.    SELECT count(*) into total  
  6.    FROM customers;  
  7.     RETURN total;  
  8. END;  
  9. /  

After the execution of above code, you will get the following result.

Function created. 

Calling Oracle Function:

 
  1. DECLARE  
  2.    c number(2);  
  3. BEGIN  
  4.    c := totalCustomers();  
  5.    dbms_output.put_line('Total no. of Customers: ' || c);  
  6. END;  
  7. /  

Hàm đệ quy của Oracle

Bạn đã biết rằng một chương trình hoặc một chương trình con có thể gọi một chương trình con khác. Khi một chương trình con gọi chính nó, nó được gọi là lệnh gọi đệ quy và quá trình này được gọi là đệ quy.

Ví dụ tính giai thừa của một số

Hãy lấy một ví dụ để tính giai thừa của một số. Ví dụ này tính giai thừa của một số cho trước bằng cách gọi chính nó theo cách đệ quy.

DECLARE  
   num number;  
   factorial number;  
  
FUNCTION fact(x number)  
RETURN number   
IS  
   f number;  
BEGIN  
   IF x=0 THEN  
      f := 1;  
   ELSE  
      f := x * fact(x-1);  
   END IF;  
RETURN f;  
END;  
  
BEGIN  
   num:= 6;  
   factorial := fact(num);  
   dbms_output.put_line(' Factorial '|| num || ' is ' || factorial);  
END;  
/  

Sau khi thực thi đoạn mã trên tại dấu nhắc SQL, nó tạo ra kết quả như sau.

Factorial 6 is 720 
PL/SQL procedure successfully completed.