Thư viện tri thức trực tuyến
Kho tài liệu với 50,000+ tài liệu học thuật
© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Chuẩn bị cho kỳ thi 733 về Phát triển ứng dụng DB2 9, Phần 9: Các thường trình do người dùng định
Nội dung xem thử
Mô tả chi tiết
Chuẩn bị cho kỳ thi 733 về Phát triển ứng dụng DB2 9, Phần 9: Các thường
trình do người dùng định nghĩa
Tích hợp logic nghiệp vụ phức tạp và có tùy biến vào các câu lệnh SQL của bạn
Ted J. Wasserman, Tư vấn CSDL, IBM
Tóm tắt: Tìm hiểu cách tạo và sử dụng các thường trình do người dùng định
nghĩa trong DB2® 9 của IBM®. Đây là hướng dẫn cuối cùng trong một loạt bài
gồm chín hướng dẫn mà bạn có thể sử dụng để trợ giúp chuẩn bị cho kỳ thi cấp
chứng chỉ Phát triển ứng dụng DB2 9 (kỳ thi 733).
Trước khi bạn bắt đầu
Về loạt bài này
Chứng chỉ Nhà phát triển ứng dụng được IBM công nhận xác nhận với những
người khác rằng bạn là một nhà phát triển ứng dụng mức trung cấp hoặc cao cấp
về DB2 cho Linux™, UNIX® và Windows®. Nó cũng chỉ ra rằng bạn có các kỹ
năng giỏi trong tất cả các nhiệm vụ lập trình chung cũng như lập trình SQL nhúng,
lập trình ODBC/CLI, lập trình.NET hoặc lập trình Java ™.
Loạt bài gồm chín hướng dẫn miễn phí này được thiết kế để giúp bạn chuẩn bị cho
kỳ thi lấy chứng chỉ Phát triển ứng dụng DB2 9 cho Linux, UNIX và Windows (kỳ
thi 733). Mỗi hướng dẫn bao gồm một liên kết đến một bản tải về dùng thử miễn
phí DB2 9 cho Linux, UNIX và Windows. Các hướng dẫn này cung cấp một cơ sở
vững chắc cho mỗi phần của kỳ thi. Tuy nhiên, bạn không nên dựa vào các hướng
dẫn này như là sự chuẩn bị duy nhất của bạn cho kỳ thi này.
Hướng dẫn này trình bày về cái gì?
Trong hướng dẫn này, bạn sẽ tìm hiểu về cách tạo và sử dụng các thường trình do
người dùng định nghĩa trong DB2 9. Bạn sẽ thấy cách có thể sử dụng các đối
tượng ứng dụng cơ sở dữ liệu phía máy chủ để đơn giản hóa và tăng tốc độ các
ứng dụng của bạn. Hướng dẫn này bao gồm các chủ đề sau:
Các hàm do người dùng định nghĩa.
Các thủ tục lưu sẵn
DB2 Developer Workbench (Bàn làm việc của nhà phát triển DB2).
Đây là hướng dẫn cuối cùng trong một loạt gồm chín hướng dẫn mà bạn có thể sử
dụng để trợ giúp chuẩn bị cho việc cấp chứng chỉ Phát triển ứng dụng DB2 9 (kỳ
thi 733). Các tài liệu trong hướng dẫn này chủ yếu trình bày các mục tiêu của Phần
9 của kỳ thi, mang tên "Các thường trình do người dùng định nghĩa".
Các yêu cầu hệ thống
Bạn không cần dùng một bản sao của DB2 9 để hoàn tất hướng dẫn này; tuy
nhiên, bạn có thể tải về một bản DB2 Express C miễn phí từ trang web DB2
Express-C để thực hành các kỹ năng của bạn. DB2 Developer Workbench cũng có
sẵn để tải về miễn phí từ trang Web Fix Pack DB2 9.
Xin lưu ý rằng một số tài liệu được thảo luận trong hướng dẫn này chỉ áp dụng với
DB2 cho Linux, UNIX và Windows và không cho DB2 trên nền tảng khác, chẳng
hạn như Hệ thống z hoặc Hệ thống i.
Ai nên dùng hướng dẫn này?
Hướng dẫn này được thiết kế cho bất kỳ ai quan tâm đến việc học tập về các khái
niệm lập trình DB2 cao cấp và chuẩn bị cho kỳ thi lấy chứng chỉ phát triển ứng
dụng DB2 9 (kỳ thi 733).
Các điều kiện cần trước
Trước khi tham dự kỳ thi 733, bạn phải vượt qua được kỳ thi về các khái niệm cơ
bản của Họ DB2 9 (kỳ thi 730). Bạn có thể sử dụng Loạt bài hướng dẫn các khái
niệm cơ bản của họ DB2 để giúp chuẩn bị cho kỳ thi đó.
Đối với hướng dẫn này để có ích, bạn cần phải có kiến thức nền tảng về hoạt động
của cơ sở dữ liệu quan hệ cũng như các kiến thức cơ bản về các khái niệm sau đây:
Các cơ sở dữ liệu.
Các cấu trúc lập trình cơ sở dữ liệu.
Biên dịch ứng dụng.
Xem xét lại thuật ngữ.
Trước khi bắt đầu hướng dẫn này, bạn nên hiểu rõ khái niệm về một kế hoạch truy
cập SQL. Nói ngắn gọn, một kế hoạch truy cập là tập hợp các bước mà DB2 sử
dụng để thực hiện một câu lệnh SQL và truy cập dữ liệu. Nó bao gồm các chỉ mục
được sử dụng, các thời điểm trong đó các trường được lấy ra từ các bảng cơ sở dữ
liệu và thứ tự các bước có thực hiện truy vấn. Kế hoạch truy cập được nhân cơ sở
dữ liệu tạo ra dựa trên câu lệnh SQL được đệ trình. Lý tưởng, cơ sở dữ liệu lựa
chọn kế hoạch truy cập tối ưu - đó là, kế hoạch sẽ trả về dữ liệu hiệu quả và nhanh
chóng nhất.
Các hàm do người dùng định nghĩa
Các hàm do người dùng định nghĩa là gì?
Các hàm do người dùng định nghĩa (User-defined functions - UDFs) là các hàm
được người sử dụng định nghĩa chạy trong nhân cơ sở dữ liệu. Các UDF gói gọn
một bộ các câu lệnh SQL hay các câu lệnh theo thủ tục chạy thường xuyên trong
một đơn vị. Điều này được lợi về quản lý mã -- thay vì phải lặp lại liên tục logic
phức tạp hay logic bình thường trong nhiều câu lệnh, bạn có thể cô lập logic đó
trong một hàm đơn.
Trong DB2, có một số kiểu hàm khác nhau cũng như các ngôn ngữ lập trình khác
nhau mà bạn có thể viết chúng theo các ngôn ngữ đó. Liệt kê sau đây tóm tắt các
kiểu hàm khác nhau trong DB2:
Hàm vô hướng SQL : Trả về một giá trị kiểu dữ liệu nhờ SQL.
Hàm hàng SQL : Trả về một hàng dữ liệu nhờ SQL.
Hàm bảng SQL : Trả về một bảng SQL dựa trên SQL.
Hàm vô hướng bên ngoài : Trả về một kiểu dữ liệu; được viết bằng một
ngôn ngữ lập trình bên ngoài.
Hàm bảng bên ngoài : Trả về một bảng đầy đủ; được viết bằng một ngôn
ngữ lập trình bên ngoài.
Hàm bảng bên ngoài OLE DB : Một hàm bảng bên ngoài OLE DB do
người dùng định nghĩa được đăng ký trong cơ sở dữ liệu để truy cập dữ liệu
từ một nhà cung cấp OLE DB.
Hàm có nguồn gốc hoặc Khuôn mẫu : Dựa vào hàm hoặc khuôn mẫu
khác.
Như bạn thấy trong danh sách trên, các kiểu hàm này chủ yếu chia thành hai kiểu
hàm khác biệt. Kiểu chung nhất là một hàm trong hay SQL, đó là một hàm được
viết khi sử dụng một tập hợp con của ngôn ngữ thủ tục SQL của DB2 (DB2's SQL
Procedural Language - SQL PL). Các hàm cũng có thể được viết bằng các ngôn
ngữ lập trình bên ngoài như C/C++, VB.NET hoặc ngôn ngữ Java. Các hàm này
được gọi là các hàm ngoài. Mã đối với các hàm trong được lưu trữ trong các bảng
danh mục (catalog) cơ sở dữ liệu, trong khi các hàm ngoài chỉ là các tham chiếu
đến nơi trong hệ thống tệp, mà các mã của ngôn ngữ lập trình ngoài đã biên dịch
được lưu trữ ở đó.
Một sự khác nhau quan trọng giữa các hàm SQL và các hàm ngoài là vị trí mà bạn
dịch chúng. Một hàm SQL có thể được dịch hoặc từ xa hoặc tại chỗ, do nó sẽ được
lưu trữ trong các bảng danh mục của cơ sở dữ liệu. Một hàm ngoài không linh
hoạt. Nó phải được biên dịch trên máy tính có một trình biên dịch thích hợp, với
thư viện biên dịch sau đó chuyển sang máy chủ. Đôi khi, tùy thuộc vào ngôn ngữ
lập trình được sử dụng, hệ điều hành và phần cứng bên dưới cần phải có cùng trên
cả hai máy biên dịch và máy chủ cơ sở dữ liệu cho mã đã dịch hoạt động. Đây là
một lý do các hàm SQL thường được ưa thích hơn các hàm ngoài, đặc biệt là trong
các ứng dụng cần nhiều hệ điều hành và nhiều cấu hình phần cứng.
Liệt kê sau đây tóm tắt các ngôn ngữ lập trình mà bạn có thể dùng để viết các
UDF:
SQL PL của DB2 (với các hàm được viết khi sử dụng một hoặc nhiều câu
lệnh SQL).
C/C++.
Ngôn ngữ Java.
Ngôn ngữ.NET CLR như C#.
OLE.
Bạn sẽ tìm hiểu về các hàm SQL và các hàm ngoài trong hai phần tiếp theo. Bạn
sẽ tìm hiểu sâu hơn các hàm SQL, bởi vì chúng là kiểu chung nhất.
Các hàm SQL do người dùng định nghĩa
Tạo một hàm
Các hàm SQL rất dễ tạo ra và sử dụng trong các ứng dụng. Các câu lệnh CREATE
FUNCTION định nghĩa các đặc tính và logic của hàm, được lưu trữ trong danh
mục hệ thống DB2. Hoạt động này được gọi là đăng ký một hàm. Một phiên bản
đơn giản của sơ đồ cú pháp CREATE FUNCTION được hiển thị trong Liệt kê 1,
với giải thích về các bộ phận chính của nó:
Liệt kê 1. Sơ đồ cú pháp CREATE FUNCTION
>>-CREATE FUNCTION--function-name----------------------------
--->
>--(--+--------------------------------+--)--*------------------>
| .-,--------------------------. |
| V | |
'---parameter-name--data-type1-+-'
>--RETURNS--+-data-type2-----------------+--*------------------->
'-+-ROW---+--| column-list |-'
'-TABLE-'
.-LANGUAGE SQL-.
>--+-------------------------+--*--+--------------+--*---------->
'-SPECIFIC--specific-name-'
.-NOT DETERMINISTIC-. .-EXTERNAL ACTION----.
>--+-------------------+--*--+--------------------+--*---------->
'-DETERMINISTIC-----' '-NO EXTERNAL ACTION-'
.-READS SQL DATA---------.
>--+------------------------+--*--+-----------------+--*-------->
+-CONTAINS SQL-----------+
| |
'-MODIFIES SQL DATA------'