CHƯƠNG 1 : TỔNG QUAN FOUNDATIONDB
2.3 Xây dựng ứng dụng tích hợp với SQL Layer[4]
2.3.3.2 Lập trình thủ tục và hàm
Thiết kế: Thủ tục và hàm cung cấp thêm các chức năng cho CSDL, chúng được sử dụng như một phần của ứng dụng. Chúng ta sử dụng thủ tục và hàm khi cần tạo một chức năng chung mà nhiều ứng dụng viết trên nhiều ngôn ngữ khác nhau cùng dùng đến.
o Ngôn ngữ: Trong SQL layer thì thủ tục và hàm được viết bằng hai ngôn ngữ Java hoặc JavaScript.
o Kiểu truyền tham số: có hai kiểu là PARAMETER STYLE JAVA và
PARAMETERSTYLE VARIABLES.
CREATE OR REPLACE FUNCTION js_function (x DOUBLE, y DOUBLE) RETURNS DOUBLE LANGUAGE javascript PARAMETER STYLE variables AS $$
var d1 = x; var d2 = y;
3*x*x + (d1 - y) + (d2 - x) + 1; $$;
o Khi nào dùng thủ tục, khi nào dùng hàm: Hàm có thể nhận đầu vào nhiều tham số nhưng chỉ trả ra một giá trị và có thể sử dụng trong câu SQL DML, ngược lại thủ tục có thể trả ra nhiều giá trị, tập kết quả thông qua các tham số đầu vào.
Truy cập dữ liệu: Để có thể truy cập dữ liệu từ CSDL, thủ tục và hàm cần dùng JDBC
CREATE OR REPLACE FUNCTION js_jdbc_access (id INT,rand_id INT)
RETURNS DOUBLE LANGUAGE javascript PARAMETER STYLE java EXTERNAL NAME 'f' AS $$ function conn () { return java.sql.DriverManager.getConnection("jdbc:default:connectio n"); } function stmt(dbconn) {
return dbconn.prepareStatement("SELECT rand_id FROM caoi.customers WHERE customer_id = ?");
}
function f (id, rand_id) { var newRand = 0;
var dbconn = conn(); var pStmt = stmt(dbconn); pStmt.setInt(1, id); rs = pStmt.executeQuery(); if (rs.next()) { newRand = rs.getInt("rand_id"); } pStmt.close(); if (rand_id > newRand) {
return rand_id - newRand; } else {
return newRand - rand_id; }
} $$;
2.4 Kết luận
Trong chương 2 tôi đã trình bày hai phương pháp xây dựng ứng dụng tích hợp với FDB: thứ nhất là dùng các hàm APIs có sẵn của FDB và thứ hai là tích hợp với môi trường SQL của SQL layer. Cách tiếp cận thứ nhất là trực tiếp và không dùng các câu lệnh SQL. Cách thứ hai phù hợp hơn trong việc xây dựng các ứng dụng với những nhà phát triển đã có kinh nghiệm với ngôn ngữ truy vấn SQL hoặc tích hợp các ứng dụng cũ dùng SQL mà không cần lập trình lại nhiều phần giao tiếp với CSDL.
Chương thứ ba tôi sẽ đi vào giải quyết bài toán thực tế sử dụng FDB để xây dựng ứng dụng Quản lý giao dịch chuyển tiền BIDV online.