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
- DECLARE
- n3 number(2);
- BEGIN
- n3 := adder(11,22);
- dbms_output.put_line('Addition is: ' || n3);
- END;
- /
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.
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:
- CREATE OR REPLACE FUNCTION totalCustomers
- RETURN number IS
- total number(2) := 0;
- BEGIN
- SELECT count(*) into total
- FROM customers;
- RETURN total;
- END;
- /
After the execution of above code, you will get the following result.
Function created.
Calling Oracle Function:
- DECLARE
- c number(2);
- BEGIN
- c := totalCustomers();
- dbms_output.put_line('Total no. of Customers: ' || c);
- END;
- /
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.