ORACLE COMMON
ORACLE LOOP/CONDITION
ORACLE ADVANCED
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

Tìm hiểu Function trong Oracle

Bài này chúng ta sẽ nói về Function trong Oracle, nó có chức năng tương tự như procedure, tuy nhiên vẫn có điểm khác biệt và chi tiết như thế nào thì hãy đọc bài này nhé.

1. Function trong Oracle

Trong Oracle, một function là một hàm dùng để xử lý một chức năng nào đó và nó sẽ trả về một giá trị duy nhất. Tương tự như các phần khác, bạn phải định nghĩa và khởi tạo function trước khi sử dụng được nó.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Có một số function có sẵn như hàm MIN, MAX, COUNT, ... đó là những function mà Oracle đã cung cấp sẵn cho chúng ta.

Cú pháp
CREATE [OR REPLACE] FUNCTION function_name  
   [ (parameter [,parameter]) ]  
RETURN return_datatype  
IS | AS  
 [declaration_section]  
BEGIN  
   executable_section  
[EXCEPTION  
   exception_section]  
END [function_name]; <br><br><br><br><br><br><br><br><br>

Tương tự như procedure, bạn cần chú ý đến một số đặc điểm sau:

  • [OR REPLACE] Nếu được khai báo thì nó sẽ xóa function cũ nếu trùng tên với function mới
  • [ (parameter [,parameter]) là các tham số
  • RETURN return_datatype là kiểu dữ liệu sẽ trả về của function
  • [declaration_section]  là các biến định nghĩa dùng trong hàm

Với tham số truyền vào sẽ có 3 loại:

  • IN là tham số chỉ đầu vào
  • OUT là tham số đầu ra
  • IN OUT là tham số vừa đầu vào, vừa đầu ra

2. Ví dụ Function trong Oracle

Bây giơ mình sẽ viết hàm tính tổng của hai số.

CREATE OR REPLACE FUNCTION adder(n1 IN number, n2 IN number)    
RETURN number    
IS    
n3 number(8);    
BEGIN   
n3 :=n1+n2;    
RETURN n3;    
END;

Bạn xem hình mà mình có giải thích ở đây.

functio oracle png

3. Gọi function trong Oracle

Sau đây là cách gọi một function mà mình đã tạo ở trên.

DECLARE    
   n3 number(2);    
BEGIN    
   n3 := adder(11,22);    
   dbms_output.put_line('Addition is: ' || n3);    
END;

Chạy thì kết quả sẽ như sau:

Addition is: 33
Statement processed.
0.05 seconds

4. Một ví dụ khác về function trong Oracle

Đây là là hàm tìm số lớn nhất trong hai số.

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;   

Cách dùng:

DECLARE  
   a number;  
   b number;  
   c number;  
BEGIN  
   a:= 23;  
   b:= 45;  
   c := findMax(a, b);  
   dbms_output.put_line(' Maximum of (23,45): ' || c);  
END;  

Hàm này sẽ trả về số lớn nhất trong hai tham số mà ta truyền vào, như vậy kết quả sẽ trả về là 45.

5. Một ví dụ về xử lý với table

Giả sử mình có bảng customer như sau:

customer data png

Mình sẽ viết một hàm đếm tổng số khách hàng có trong bảng này như sau:

CREATE OR REPLACE FUNCTION totalCustomers  
RETURN number IS  
   total number(2) := 0;  
BEGIN  
   SELECT count(*) into total  
   FROM customers;  
    RETURN total;  
END; 

Và đây là chương trình mình gọi hàm này.

DECLARE  
   c number(2);  
BEGIN  
   c := totalCustomers();  
   dbms_output.put_line('Total no. of Customers: ' || c);  
END; 

Kết quả sẽ trả về là: 

Total no. of Customers: 4
PL/SQL procedure successfully completed.

6. Function đệ quy trong Oracle

Khá thú vị phải không nào? Với các ngôn ngữ lập trình như C,C++ thì thuật toán đệ quy quá quen thuộc rồi, nhưng trong Oracle thì bạn cũng có thể làm được điều đó.

Mình sẽ viết một hàm tính giai thừa. Muốn tính giai thưa thì ta sẽ phải sử dụng vòng lặp, hoặc đệ quy cũng được. Và trong ví dụ này mình sẽ sử dụng đệ quy nhé.

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;  

Cách gọi đến hàm đệ quy này khá đơn giản.

DECLARE  
   num number;  
   factorial number;  
  
BEGIN  
   num:= 6;  
   factorial := fact(num);  
   dbms_output.put_line(' Factorial '|| num || ' is ' || factorial);  
END;  

7. Lệnh xóa function trong Oracle

Nếu bạn muốn xóa một function nào đó thì hãy sử dụng lệnh DROP FUNCTION nhé.

Cú pháp
DROP FUNCTION function_name;  

Ví dụ
DROP FUNCTION fact;  

8. Lời kết

Như vậy là mình đã giới thiệu xong một vài cách sử dụng function trong Oracle, những kiến thức thế này rất bổ ích phải không các bạn, khá thú vị và hấp đẫn.

Mình cũng có đưa ra một vài ví dụ về cách tạo Function, cách gọi Function và xóa Function. Hy vọng nó  sẽ hữu ích với bạn.

Cùng chuyên mục:

Hàm Hàm ASCII trong Oracle

Hàm Hàm ASCII trong Oracle

Cách sử dụng hàm Hàm ASCII trong 150

Hàm Hàm ASCIISTR trong Oracle

Hàm Hàm ASCIISTR trong Oracle

Cách sử dụng hàm Hàm ASCIISTR trong 150

Hàm Hàm CHR trong Oracle

Hàm Hàm CHR trong Oracle

Cách sử dụng hàm Hàm CHR trong 150

Hàm Hàm COMPOSE trong Oracle

Hàm Hàm COMPOSE trong Oracle

Cách sử dụng hàm Hàm COMPOSE trong 150

Hàm Hàm CONCAT trong Oracle

Hàm Hàm CONCAT trong Oracle

Cách sử dụng hàm Hàm CONCAT trong 150

Hàm Hàm CONVERT trong Oracle

Hàm Hàm CONVERT trong Oracle

Cách sử dụng hàm Hàm CONVERT trong 150

Hàm Hàm DECOMPOSE trong Oracle

Hàm Hàm DECOMPOSE trong Oracle

Cách sử dụng hàm Hàm DECOMPOSE trong 150

Hàm Hàm DUM trong Oracle

Hàm Hàm DUM trong Oracle

Cách sử dụng hàm Hàm DUM trong 150

Hàm Hàm INITCAP trong Oracle

Hàm Hàm INITCAP trong Oracle

Cách sử dụng hàm Hàm INITCAP trong 150

Hàm Hàm INSTR trong Oracle

Hàm Hàm INSTR trong Oracle

Cách sử dụng hàm Hàm INSTR trong 150

Hàm Hàm INSTR2 trong Oracle

Hàm Hàm INSTR2 trong Oracle

Cách sử dụng hàm Hàm INSTR2 trong 150

Hàm Hàm INSTR4 trong Oracle

Hàm Hàm INSTR4 trong Oracle

Cách sử dụng hàm Hàm INSTR4 trong 150

Hàm Hàm INSTRB trong Oracle

Hàm Hàm INSTRB trong Oracle

Cách sử dụng hàm Hàm INSTRB trong 150

Hàm Hàm INSTRC trong Oracle

Hàm Hàm INSTRC trong Oracle

Cách sử dụng hàm Hàm INSTRC trong 150

Hàm Hàm LENGTH trong Oracle

Hàm Hàm LENGTH trong Oracle

Cách sử dụng hàm Hàm LENGTH trong 150

Hàm Hàm LENGTH2 trong Oracle

Hàm Hàm LENGTH2 trong Oracle

Cách sử dụng hàm Hàm LENGTH2 trong 150

Hàm Hàm LOWER trong Oracle

Hàm Hàm LOWER trong Oracle

Cách sử dụng hàm Hàm LOWER trong 150

Hàm Hàm LPAD trong Oracle

Hàm Hàm LPAD trong Oracle

Cách sử dụng hàm Hàm LPAD trong 150

Hàm Hàm LTRIM trong Oracle

Hàm Hàm LTRIM trong Oracle

Cách sử dụng hàm Hàm LTRIM trong 150

Hàm Hàm NCHR trong Oracle

Hàm Hàm NCHR trong Oracle

Cách sử dụng hàm Hàm NCHR trong 150

Top