Định nghĩa package Định nghĩa package Ví dụ Oracle Package là một nhóm gồm nhiều thành phần như hàm, thủ tục, biến, hằng, cursors, hay các kiểu dữ liệu do người dùng tự khai báo….Nhữn
Trang 1PACKAGE
Trang 2Xây dựng package
Trang 3Nội dung
Tạo Package.
Gọi package
Xóa Package.
Trang 4Định nghĩa package
Định nghĩa package
Ví dụ
Oracle Package là một nhóm gồm nhiều thành phần như hàm, thủ tục, biến, hằng, cursors, hay các kiểu dữ liệu do người dùng tự khai báo….Những thành phần này được gom chung lại trong một đơn vị
xử lý duy nhất là package để thực hiện một chức năng nào đó
- Gói UTL_FILE : Cho phép truy xuất tới file với lệnh
PL/SQL
- Gói DBMS_OUTPUT: Kết xuất các giá trị trả về từ các hàm, thủ tục,…
…
Trang 5Giới thiệu về Package
Cấu trúc của package
Một package được cấu trúc làm hai phần
- Phần mô tả (specification): Định nghĩa các giao tiếp có thể có của package với bên ngoài
- Phần thân (body): Là các cài đặt cho các giao tiếp có trong phần mô tả ở trên
Trang 6Giới thiệu về Package
Các ưu điểm của Package
Tăng tính phân nhỏ các thành phần
Nâng cao hiệu suất sử dụng
Che dấu thông tin
Đơn giản trong thiết kế ứng dụng
Cho phép thực hiện quá tải
Trang 7Lợi ích của việc sử dụng Package
Cho phép thực hiện quá tải
Khả năng overloading (nạp chồng) là một trong nhưng điểm mạnh nhất của package Đặc điểm này không có đối với những hàm hay thủ tục được tạo ra tiêng lẻ trong cơ sở dữ liệu ( bằng lệnh create procedure hay create function) Overloading đặc biệt hữu ích khi bạn muốn xử lý các trường (field) trong một bảng với nhiều kiểu dữ liệu khac nhau Dưới đây
là một ví dụ về cài đặt các hàm overloading trong một package
Trang 8Lợi ích của việc sử dụng Package
Bạn có thể chỉ định những thành phần dữ liệu (hay hàm) trong phần đặc tả được phép sử dụng chung (public) hoặc chỉ có tác dụng riêng (private) bên trong package VD một package của chương trình bao gồm 4 hàm Addrec, NewRec, DeleteRec, Checkrec trong đó có 3 hàm đầu được khai báo public, riêng hàm checkRec được khai báo là private, theo cach này lập trình viên khác sử dụng package do bạn thiết kế sẽ không thấy được hàm chechRec
Ẩn dấu thông tin
Trang 9Lợi ích của việc sử dụng Package
Mặc dù phần đặc tả của Package bao gồm rất nhiều thành phần như các biến, hằng, các khai báo hàm, thủ tục hay kiểu dữ liệu do người tự định nghĩa, thì khi thiết kế phần thân (body) không bắt buộc phải cài đặt đầy các thành phần
đã khai báo ở phần đặc tả Cơ chế tác biệt này giúp cho phần đặc tả và phần thân của package khi thiết kế không bị phụ thuộc lẫn nhau Hơn nữa phần thân của package cũng được biên dịch độc lập với phần đặc tả, các nhà phát triển
có thể dễ dàng dò lỗi, kiểm tra hay mở rộng phần thân cho package nhưng vẫn bảo dảm các giao tiếp cung cấp cho ứng dụng nhưng phần đặc tả là không thay đổi
Đơn gian trong thiết kế ứng dụng
Trang 10Một số khái niệm cần chú
ý
Public variable: là biến mà các ứng dụng bên
ngoài có thể tham chiếu tới được
Public procedure: bao gồm các hàm, thủ tục
của package có thể triệu gọi từ các ứng dụng bên ngoài
Global variable: là biến được khai báo trong
toàn bộ package, ứng dụng bên ngoài không tham chiếu được tới biến này
Trang 11Một số khái niệm cần chú
ý
Public procedure: bao gồm các hàm, thủ tục
của package có thể triệu gọi từ các ứng dụng bên ngoài
Private procedure: là các thủ tục có trong
package và chỉ có thể được triệu gọi bởi các hàm hay thủ tục khác trong package mà thôi
Public procedure: bao gồm các hàm, thủ tục
của package có thể triệu gọi từ các ứng dụng bên ngoài
Private procedure: là các thủ tục có trong
package và chỉ có thể được triệu gọi bởi các hàm hay thủ tục khác trong package mà thôi
Trang 12Xây dựng Package
Khai báo phần mô tả package
CREATE [OR REPLACE] PACKAGE package_name
IS/AS
Type and item declarations Subprogram specifications END package_name;
Với:
- package_name: Tên package
- Type and item declarations: Phần khai báo các biến, hằng, cursor trong toàn bộ package
- subprogram specifications: Khai báo các hàm, thủ tục PL/SQL
Trang 13Định nghĩa package
Ví dụ
CREATE OR REPLACE PACKAGE MANAGE_STUDENT
AS
/* Type and item declarations */
Last_name VARCHAR2(30);
First_name VARCHAR2(30);
/* Subprogram specifications */
Function insert_Table( Last_name_in VARCHAR2,
First_name_in VARCHAR2) Return NUMBER; Provedure view_Table( Last_name_in VARCHAR2,
First_name_in VARCHAR2); End MANAGE_STUDENT.
Trang 14Xây dựng Package
Ví dụ
CREATE or REPLACE PACKAGE Hello
as
Khai báo biến nếu có Khai báo thủ tục, hàm, con trỏ nếu có
procedure hello;
End Hello ;
Trang 15Xây dựng Package
Các quy tắc trong thân của package
Phải có sự so khớp tuyệt đối giữa, cursor, các tiêu đề của procedure, function và nhưngc định nghĩa trong phần mô tả của package với phần thân của package
Không lặp lại phần khai báo ở trong thân đối với các biến, ngoại lệ hoặc các hằng đã khai báo trong phần mô tả
Bất kỳ thành phần nào được khái báo trong phần
mô tả cũng có thể được tham chiếu trong phần thân
Trang 16Xây dựng Package
Cú pháp khai báo phần thân package
CREATE [OR REPLACE] PACKAGE BODY package_name
IS/AS
Private type and item declarations:
Subprogram bodies:
END package_name;
Với:
package_name: Tên package
type and item declarations : Phần khai báo các biến, hằng, cursor, ngoại lệ và kiểu
subprogram specifications: Khai báo các hàm, thủ tục PL/SQL
Trang 17Xây dựng Package
Vi du
CREATE or REPLACE PACKAGE BODY Hello
as
procedure hello
is
begin
dbms_output.put_line(' chao cac ban!');
end;
End Hello ;
Trang 18Xây dựng Package
Qui tắc gọi các phần tử trong gói
Tên_gói.Tên_phần_tử
package_name.type_name package_name.item_name package_name.subprogram_name package_name.call_spec_name
Trang 19Xây dựng Package
Huỷ phần package
Huỷ phần package body
Ví dụ:
DROP PACKAGE Hello;
Xóa gói