Tìm Hiểu Function Trong Oracle - TRẦN VĂN BÌNH MASTER

Mục lục

  • 1. Function trong Oracle
  • 2. Ví dụ Function trong Oracle
  • 3. Gọi function trong Oracle
  • 4. Một ví dụ khác về function trong Oracle
  • 5. Một ví dụ về xử lý với table
  • 6. Function đệ quy trong Oracle
  • 7. Lệnh xóa function trong Oracle
  • 8. Lời kết

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ó.

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
12345678910CREATE [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ố.

12345678CREATE 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.

create or replace adder(n1 in number, n2 in number) -- n1, n2 là các tham số của hàm

return number -- kiểu dữ liệu trả về

is

n3 number(8); -- khai báo biến dùng trong hàm

begin

n3 := n1+n2;

return n3; -- trả kết quả

end;

3. Gọi function trong Oracle

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

123456DECLARE 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:

123Addition is: 33Statement 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ố.

12345678910111213FUNCTION 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:

12345678910DECLARE 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:

12345678CREATE 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.

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

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

12Total no. of Customers: 4PL/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é.

123456789101112FUNCTION 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.

123456789DECLARE 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
1DROP FUNCTION function_name;
Ví dụ
1DROP 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.

Từ khóa » Khai Báo Biến Trong Pl/sql