Database function là gì?

Noun Database
Hàm cơ sở dữ liệu

Một hàm cơ sở dữ liệu (database function) có thể chứa một số câu lệnh SQL (SQL statement). Một loạt cấu trúc điều khiển (control structure) cũng có sẵn cho người lập trình ứng dụng. Ví dụ,bạn có thể lập trình các vòng lặp (loop) hoặc các rẽ nhánh (branch) trong một hàm cơ sở dữ liệu (database function).

Các hàm cơ sở dữ liệu (database function) là các thủ tục cơ sở dữ liệu (database procedure) chuyên biệt có chứa bất kỳ số lượng tham số đầu vào (input parameter) nào nhưng chỉ có một tham số đầu ra (output parameter). Tham số đầu ra đại diện cho kết quả của hàm cơ sở dữ liệu (database function).

Để tạo một hàm cơ sở dữ liệu, hãy sử dụng câu lệnh CREATE FUNCTION.


CREATE FUNCTION hotel.avgprice (zip CHAR(5)) RETURNS FIXED(6,2) AS

     VAR sum FIXED(10,2); price FIXED(6,2);

     hotels INTEGER;

TRY

   SET sum = 0; SET hotels = 0;

   DECLARE functionresult CURSOR FOR

   SELECT price FROM hotel.room,hotel.hotel WHERE zip = :zip AND

   room.hno = hotel.hno AND type = 'single';

     WHILE $rc = 0 DO BEGIN

      FETCH functionresult INTO :price;

      SET sum = sum + price;

      SET hotels = hotels + 1;

     END;

CATCH

  IF $rc  100 THEN STOP ($rc, 'unexpected error');

CLOSE functionresult;

IF hotels > 0 THEN RETURN sum/hotels

  ELSE RETURN NULL;

Hàm cơ sở dữ liệu avgprice xác định giá trung bình cho các phòng đơn trong các khách sạn nằm trong một dải mã zip được chỉ định.

Dưới đây là giải thích cho câu lệnh tạo hàm cơ sở dữ liệu trên.

  • Tham số đầu vào là mã zip mã "zip", kiểu dữ liệu của giá trị đầu ra được chỉ định sau từ khóa (keyword) RETURNS
  • Các câu lệnh SQL (ví dụ: câu lệnh SELECT) và cấu trúc điều khiển (ví dụ: câu lệnh WHILE và câu lệnh IF) được yêu cầu để thực thi chức năng mong muốn được xác định sau từ khóa AS.
  • Các biến được yêu cầu trong hàm cơ sở dữ liệu được định nghĩa sau từ khóa VAR.
  • Xử lý lỗi: Nếu lỗi SQL xảy ra trong danh sách câu lệnh giữa TRY và CATCH, hệ thống sẽ phân nhánh trực tiếp đến câu lệnh theo sau CATCH. Quy trình xử lý sự cố thực tế có thể được lập trình trong câu lệnh này.
  • SET có thể được sử dụng để gán giá trị cho các biến sum và hotels.
  • Câu lệnh DECLARE CURSOR được sử dụng để định nghĩa bảng kết quả có tên functionresult.
  • Các bảng trong câu lệnh SELECT phải luôn được chỉ định hoàn toàn, nghĩa là với chủ sở hữu (owner) được chỉ định. Lưu ý rằng mã zip được chuyển dưới dạng tham số :zip.
  • Câu lệnh WHILE cho phép các câu lệnh được lặp lại theo các điều kiện nhất định. Câu lệnh được thực hiện miễn là điều kiện tìm kiếm được chỉ định được đáp ứng.
  • Câu lệnh FETCH chỉ định các giá trị từ hàng hiện tại của bảng kết quả functionresult cho các tham số (parameter).
  • Biến $rc trả về mã lỗi số sau khi câu lệnh SELECT được thực thi. Giá trị 0 có nghĩa là câu lệnh SELECT đã được thực thi thành công.
  • Một câu lệnh IF đầu tiên đánh giá điều kiện tìm kiếm. Nếu điều này được đáp ứng, câu lệnh được chỉ định trong nhánh THEN sẽ được thực thi. Nếu không, câu lệnh trong nhánh ELSE (nếu được định nghĩa) sẽ được thực thi.
  • Câu lệnh CLOSE xóa kết quả bảng kết quả.
  • Tham số đầu ra được định nghĩa sau từ khóa RETURN.
Learning English Everyday