Nâng caoOracle PL/SQL ~16 phút

Package — tổ chức stored procedures

Trong hệ thống Oracle thật, procedure thường sống trong package thay vì đứng rời rạc; package tạo namespace và contract ổn định cho ứng dụng.

Lý thuyết

Package specification

Spec công bố procedure, function, type và constant mà caller được dùng. Nó giống interface/public header.

Package body

Body chứa implementation của public subprogram và có thể thêm private helper không xuất hiện trong spec.

Caller gọi bằng namespace: hr_salary_api.raise_department_salary(...).

Lợi ích

  • Gom API cùng domain vào một namespace.
  • Ẩn implementation và helper riêng tư.
  • Hỗ trợ overload nhiều procedure cùng tên nhưng signature khác.
  • Oracle có thể nạp package vào memory theo session để giảm chi phí parse.

Dependency

Đổi package body thường ít ảnh hưởng caller hơn đổi specification. Thay public signature trong spec có thể invalidate dependent objects.

Quyền

GRANT EXECUTE ON hr_salary_api TO app_user; cấp quyền cho toàn bộ public API của package.

Package state là theo session và có thể gây hành vi khó đoán với connection pool. Tránh lưu business state dài hạn trong package globals.

Thuật ngữ (di chuột để xem giải thích)

Dữ liệu mẫu

Đang tải dữ liệu mẫu…