Private procedure (th tc riêng ph n): là các hàm, th tc 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 ệọ ởủ ụ

Một phần của tài liệu Oracle cơ bản - SQL và PL/SQL pptx (Trang 96 - 100)

- Thay DEPTNO của các nhân viên này bằng DEPTNO của Boston Thay lương mỗi nhân viên bằng lương trung bình của bộ phậ n * 1.1 Thay commission

3. Private procedure (th tc riêng ph n): là các hàm, th tc 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 ệọ ởủ ụ

4. Global variable (bi n t ng th ): là bi n đế ổ ể ế ược khai báo dùng trong toàn b package, ộ ng d ng bên ngoài tham chi u đ c t i bi n này.

ứ ụ ế ượ ớ ế

5. Private variable (bi n riêng ph n): là bi n đế ầ ế ược khai báo trong m t hàm, th t c thu c ộ ủ ụ ộ package. Nó ch có th đỉ ể ược tham chi u đ n trong b n thân hàm hay th t c đó. ế ế ả ủ ụ

14.3.2. T o package ạ

Ta có th t o package tr c ti p b ng dòng l nh sau: Cú phápể ạ ự ế ằ ệ khai báo ph n mô t package: ầ ả

CREATE [OR REPLACE] PACKAGE package_name IS | AS

public type and các 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, ngo i l vàằ ạ ệ

ki u s d ng trong toàn bể ử ụ ộ

package

subprogram specifications Khai báo các hàm, th t c ủ ụ

PL/SQL

Cú pháp khai báo ph n thân package: ầ

CREATE [OR REPLACE] PACKAGE BODY package_name

Oracle c b n - SQL và PL/SQL ơ ả

IS | AS

private type and item declarations Khai báo các ki u ể

ch s d ng riêng ỉ ử ụ

trong package subprogram bodies N i dung c a ộ ủ

package END package_name;

V i: ớ

package_name

type and item declarations subprogram specifications Tên package Ph n khai báo các bi n, h ng, ầ ế ằ cursor, ngo i l và ki u ạ ệ ể Khai báo các hàm, th t c ủ ụ PL/SQL Ví d : ụ

-- Ph n khai báo c a package ầ ủ

CREATE OR REPLACE PACKAGE comm_package IS

v_comm number := 10; -- Khai báo bi n có giá tr kh i t o ế ị ở ạ

-- Khai báo th t c đ giao ti p v i bên ngoài ủ ụ ể ế ớ

PROCEDURE reset_comm (p_comm IN number); END comm_package;

-- Ph n thân c a package ầ ủ

CREATE OR REPLACE PACKAGE BODY comm_package IS

-- Hàm riêng ph n ch s d ng trong package ầ ỉ ử ụ

FUNCTION validate_comm (v_comm IN number) RETURN BOOLEAN IS v_max_comm number; BEGIN

SELECT max(comm) INTO v_max_comm FROM emp;

IF v_comm > v_max_comm THEN RETURN FALSE; ELSE

RETURN TRUE; END IF;

END validate_comm;

-- Th t c giao ti p v i bên ngoàiủ ụ ế ớ

PROCEDURE reset_comm

(p_comm IN number) IS

v_valid BOOLEAN; BEGIN

v_valid := validate_comm(p_comm); IF v_valid = TRUE THEN

v_comm := p_comm; ELSE RAISE_APPLICATION_ERROR(-20210,‘Invalid comm’); END IF: END reset_comm; END comm_package; 14.3.3. Hu package ỷ

Tương t nh vi c t o package, ta có th hu b hàm thông qua câu l nh SQL. Cú pháp: ự ư ệ ạ ể ỷ ỏ ệ

-- Hu ph n package specification ỷ ầ

DROP PACKAGE Tên package; -- Hu ph n package body ỷ ầ

DROP PACKAGE BODY Tên package;

Ví d : ụ

DROP PACKAGE comm_package;

DROP PACKAGE BODY comm_package;

14.3.4. L i ích c a vi c s d ng package ợ ủ ệ ử ụ Tăng tính phân nh các thành ph n (Modularity) ỏ ầ

Ta có th đóng gói các thành ph n, c u trúc có quan h logic v i nhau trong cùng m t module ng v i m tể ầ ấ ệ ớ ộ ứ ớ ộ package. Vi c k th a gi a các package r t đ n gi n, và đệ ế ừ ữ ấ ơ ả ược th c hi n m t cách trong sáng. ự ệ ộ

Đ n gi n trong vi c thi t k ng d ng ơ ả ệ ế ế ứ ụ

T t c các thông tin c n thi t cho vi c giao ti p đ u đấ ả ầ ế ệ ế ề ược đ t trong ph n đ c t c a package (packageặ ầ ặ ả ủ specification). N i dung ph n này có th độ ầ ể ược so n th o và biên d ch đ c l p v i ph n thân c a packageạ ả ị ộ ậ ớ ầ ủ (package body). Do đó, các hàm hay th t c có g i t i các thành ph n c a package có th đủ ụ ọ ớ ầ ủ ể ược biên d chị t t. Ph n thân c a package có th đố ầ ủ ể ược ti p t c phát tri n cho đ n khi hoàn thành ng d ng. ế ụ ể ế ứ ụ

n d u thông tin (hiding information)

ẩ ấ

Package cho phép s d ng các thành ph n bên trong dử ụ ầ ướ ại d ng public (công c ng) hay private (riêng t ).ộ ư Tuỳ theo yêu c u thi t k , ta có th cho phép truy nh p hay n d u thông tin. T đó, có th b o v đầ ế ế ể ậ ẩ ấ ừ ể ả ệ ược tính toàn v n d li u. ẹ ữ ệ

Nâng cao hi u su t s d ng ệ ấ ử ụ

Ngay khi g i m t hàm hay th t c b t kỳ trong package l n đ u tiên. Toàn b n i dung c a package sọ ộ ủ ụ ấ ầ ầ ộ ộ ủ ẽ được n p vào b nh . Do v y, các hàm và th t c con trong package g i đ n sau này có th th c hi nạ ộ ớ ậ ủ ụ ọ ế ể ự ệ ngay mà không c n ph i n p l i vào b nh . Vi c này làm gi m thi u thao tác truy xu t vào ra (I/O access)ầ ả ạ ạ ộ ớ ệ ả ể ấ nâng cao t c đ . ố ộ

Oracle c b n - SQL và PL/SQL ơ ả

Th c hi n quá t i (overloading) ự ệ ả

Package cho phép th c hi n quá t i đ i v i các hàm và th t c trong nó. Theo đó, các hàm và th t c khácự ệ ả ố ớ ủ ụ ủ ụ nhau có th để ược phép đ t trùng tên. Vi c này s nâng cao tính m m d o c a vi c s d ng hàm, th t cặ ệ ẽ ề ẻ ủ ệ ử ụ ủ ụ trong package.

14.3.5. M t s package chu n c a Oracle ộ ố ẩ ủ

Th t c ủ ụ Hàm

DBMS_ALERT Cung c p các s ki n v các thông đi p c a database ấ ự ệ ề ệ ủ

DBMS_APPLICATION_INFO Thông tin v các ho t đ ng hi n th i đ i v i database ề ạ ộ ệ ờ ố ớ

DBMS_DDL Biên d ch l i các hàm, th t c va package. Phân tích các ị ạ ủ ụ index, table, cluster,...

DBMS_DESCRIBE Tr v các di n gi i cho các tham s c a th t c, hàm ả ề ễ ả ố ủ ủ ụ

DBMS_JOB Lên k ho ch th c hi n các đo n mã l nh PL/SQL ế ạ ự ệ ạ ệ

DBMS_LOCK Cung c p các hàm cho phép yêu c u, gi i phóng, đi u ấ ầ ả ề ch nh các tr ng thái khoá (lock) đ i v i t ng đ i tỉ ạ ố ớ ừ ố ượng trên database.

DBMS_MAIL G i các message t Oracle Server t i Oracle*mail ử ừ ớ

DBMS_OUTPUT K t xu t các giá tr tr v t các hàm, th t c, trigger,.. ế ấ ị ả ề ừ ủ ụ

DBMS_PIPE Cho phép x lý g i đ ng th i các thông đi p ử ử ồ ờ ệ

DBMS_SESSION Cung c p các phép truy nh p SQL thay vì các câu l nh ấ ậ ệ session

DBMS_SHARED_POOL Cho phép l u gi các đ i tư ữ ố ượng trong vùng nh chia s . ớ ẻ

DBMS_SQL Cho phép s d ng l nh SQL đ ng đ truy xu t database ử ụ ệ ộ ể ấ

DBMS_TRANSACTION Đi u khi n các giao d ch, c i thi n và nâng cao hi u qu ề ể ị ả ệ ệ ả đ i v i các giao d ch nh và không phân tán ố ớ ị ỏ

DBMS_UTILITY Phân tích các đ i tố ượng trong t ng schema. ừ

UTL_FILE Cho phép truy xu t t i file ngay v i câu l nh PL/SQL ấ ớ ớ ệ

Một phần của tài liệu Oracle cơ bản - SQL và PL/SQL pptx (Trang 96 - 100)

Tải bản đầy đủ (PDF)

(106 trang)