Cấu trúc chương trình PL/SQL

Một phần của tài liệu đồ án tốt nghiệp :quản trị cơ sở dữ liệu Oracle để xây dựng hệ thống bán hàng tại công ty VINDA (Trang 31 - 36)

II.2 CÁC THÀNH PHẦN CỦA MỘT KHỐI PL/SQL.

Bất kỳ một khối PL/SQL nào cũng có ba thành phần:

Phần Khai báo biến.

Phần thực thi .

Phần xử lý exception. VD:

Declare

So NUMBER;/* Khai báo biến*/ Begin /*Phần thực thi*/ If (so> 3) Then DBMS_OUTPUT.PUT_LINE(‘Hello, World’); Else RAISE bad_data; End If; Exceptions /*Xử lý exception*/ When bad_data Then

DBMS_PUTLINE(‘Error condition’); End;

II.3 CÁC KIỂU DỮ LIỆU

 NUMBER: chứa bất kỳ số nào.

 CHAR( size), VARCHAR2(size): dùng để lưu trữ các chuỗi ký tự số. kiểu CHAR thêm các khoảng trắng vào lưu trữ đủ chiều dài.

 DATE: dùng để lưu trữ ngày.

 LONG: Lưu trữ các Text lớn, đến 2 gigabyte chiều dài.

 LONG RAW: dùng lưu trữ những khối dữ liệu lớn ở khuôn dạng nhị phân.

 RAW: Lưu trữ những khối dữ liệu nhỏ hơn khuôn dạng nhị phân.

 MLSLABEL: Sử dụng trong Oracle Trusted.

 ROWID: sử dụng để lưu trữ khuôn dạng đặc biệt của ROWID trong cơ sở dữ liệu.

 BOOLEAN: Lưu trữ giá trị True/false.

 TABLE/RECORD: Các bảng có thể sử dụng để lưu các giá trị tương đương với một dãy, các record lưu các biến có kiểu dữ liệu composite.

II.4. ĐIỀU KHIỂN LUỒNG XỬ LÝ PL/SQL.

1. Các vòng lặp: Declare … begin exec get_it; A:=fcnt(5) End; Các khối PL/SQL

Loop-exit: Là vòng lặp đơn giản nhất trong PL/SQL. Từ khoá loop định

nghĩa bắt đầu của khối mã lệnh sẽ được lặp lại, end loop chỉ định kết thúc vịng lặp.Từ khố exit chỉ định thốt khỏi vịng lặp. VD: Declare My_leg NUMBER:=0; My_hypotenuse NUMBER:=0; BEGIN LOOP My_leg:=my_leg+1; Execute find_hypotenuse(my_leg,my_leg,my_hypotenuse); If my_leg=25 Then EXIT; END IF; END LOOP; END;

Vòng lặp While-Loop:tương đương loop-exit.

Vd: Decclare So1 NUMBER:=0; So 2 NUMBER:=0; Kq NUMBER:=0; BEGIN

While ( So1<10) and (So 2<20) Loop Kq:=So1+So2; End Loop; END;  Vòng lặp For-loop VD: Declare So1 NUMBER:=0; BEGIN

For So1 IN 1..25 Loop Execute Tinh(So1,So1); End Loop;

END;

2. LẶP TRÌNH VỚI CON TRỎ( CURSOR).

Có hai loại : Cursor ngầm và Cursor tường minh.

 Cursor tường minh được đặt tên bỡi nhà phát triển ứng dụng. Nó chính là một lệnh select được đặt tên. Bất kỳ lệnh nào cũng có thể sử dụng trong một cursor tường minh bằng cách sử dụng cú pháp. (adsbygoogle = window.adsbygoogle || []).push({});

Cursor cursor_name is.

1) XỬ LÝ EXCEPTION.

Ba loại Exception trong PL/SQL là:

Predefined Exceptions: Để tiện ích việc xử lý lỗi trong PL/SQL, Oracle đã

Những exception này được sử dụng để xử lý những tình huống chung có thể xảy ra trong cơ sở dữ liệu.

User- defined Exceptions:Ngoài các Predefined Exception có thể tạo ra các

User defined Exception để quản lý các tình huống xuất hiện trong mã lệnh. Không như các predefined exception xảy ra ngầm khi điều kiện lỗi tương ứng phát sinh, một user defined exception cần có mã lệnh tường minh trong PL/SQL. để sinh ra. Cần có mã lệnh trong ba phần của một khối PL/SQL . Các phần mã lệnh yêu cầu được mô tả như sau:

Khai báo exception: Trong phần khai báo của khối PL/SQL, tên exception

cần phải khai báo. Tên này sẽ sử dụng để yêu cầu exception trong phần thực thi nếu các điều kiện của exception xảy ra.

Kiểm tra exception: Trong phần thực thi của một khối PL/SQL, cần có mã

lệnh kiểm tra tường minh các điều kiện lỗi user-defined để gọi exception nếu điều kiện được thỏa.

Xử lý Exception: Trong phần exception handler của khối PL/SQL, cần có

một mệnh đề đặc biệt when gọi tên exception và mã lệnh cần thực hiện nếu exception xảy ra.

2) EXCEPTION_INIT PRAGMA.

Lệnh pragma cho phép nhà phát triển ứng dụng khai báo một lỗi được đánh số kết hợp với một exception được đặt tên trong khối. Việc dùng này cho phép dùng mã lệnh xử lý các lỗi chưa được xử lý rõ ràng.

4. CHỈ ĐỊNH CÁC EXCEPTION CHUNG(COMMON EXCEPTION).

Một số predefined exception:

invalid_cursor: Xảy ra khi đóng một cursor khơng mở.

cursor_already_open: Xảy ra khi mở một cursor chưa đóng.

dup_val_on_index:Xâm phạm ràng buộc unique hay primary key.

no_data_found: Khơng có hàng nào được chọn hay thay đổi bởi tác vụ

SQL.

too_many_rows: Nhận được hơn một hàng bỡi một subquery một hàng hay

trong một lệnh SQL mà Oracle mong đợi một hàng.

zero_divide: Chia cho không.

rowtype_mismatch: Các kiểu dữ liệu của record mà dữ liệu từ cursor được

gán khơng tương thích.

invalid_number: Một chuỗi các ký số được tham trỏ như một số.

5. MÃ HỐ TRÌNH XỬ LÝ LỖI.

Mỗi user-defined exception trong phần khai báo và thực thi của một khối PL/SQL nên có một exception handler kết hợp viết cho nó. Cách tốt nhất để xử lý một exception là gọi tên nó rõ ràng khi sử dụng mệnh đề when trong khối exception của chương trình PL/SQL. Exception handler có lẽ là một thành tựu lớn nhất đạt được bằng cách sử dụng PL/SQL để viết các store procedure trong Oracle. Tính linh hoạt và dễ dàng giúp đơn giãn hố việc phát triển những chương trình lớn (adsbygoogle = window.adsbygoogle || []).push({});

CHƯƠNG IV: PHƯƠNG PHÁP LUẬN PHÂN TÍCH THIẾT KẾ HỆ THỐNG.

Phương pháp phân tích có cấu trúc,trãi qua thời gian đã chứng tỏ được tính

kinh điển của nó. Nó là phương pháp dung dị, không cầu kỳ như một số phương pháp khác, dễ áp dụng, nhưng lại rất hữu hiệu. Ngày nay nó chưa lạc hậu, mà vẫn còn phát huy tác dụng tốt. Bằng chứng là một hệ thống lớn và hiện đại như ORACLE vẫn tiếp sử dụng nó.

I.1 Phương pháp phân tích hệ thống về chức năng.

Đó là phương pháp SA(Structured Analysis) do De Macro và những những

người khác như (Yourdon, Constatine…) đưa ra năm 70 nhưng vẫn còn phát huy tác dụng cho đến ngày nay. Nó vẫn là nền tảng của những phần mềm trợ giúp phân tích , thiết kế nổi tiếng như Designer 2000 của ORACLE. Cơng cụ chính là biểu đồ luồng dữ liệu.

I.1.1 Biểu đồ phân cấp chức năng.

Là một loại biểu đồ diễn tả sự phân rã dần dần các chức năng từ đại thể đến

chi tiết. Mỗi nút trong biểu đồ là một chức năng, và quan hệ duy nhất giữa các chức năng, diển tả bỡi các cung nối liền các nút, là quan hệ bao hàm. Như vậy biểu đồ phân cấp chức năng là một cấu trúc cây.

Đặc điểm của biểu đồ phân cấp chức năng là:

 Cho một cách nhìn khái quát ,dễ hiểu, từ đại thể đến chi tiết về các chức năng, nhiệm vụ cần thực hiện.

 Dễ thành lập, bằng cách phân rã dần các chức năng từ trên xuống.

 Có tính chất tĩnh, bởi chúng chỉ cho thấy các chức năng mà không cho thấy trình tự xử lý.

 Thiếu vắng sự trao đổi thơng tin giữa các chức năng.

Vì những đặc điểm kể trên mà biểu đồ phân cấp chức năng thường được sử dụng làm mơ hình chức năng trong bước đầu phân tích, hoặc cho các hệ thống đơn giãn. Nếu hệ thống là phức tạp thì mơ hình chức năng dưới dạng biểu đồ phân cấp chức năng là quá sơ lược và các thiếu sót nêu trên trong hai đặc điểm cuối ở trên là không thể châm chước được. Lúc đó người dùng biểu đồ luồng dữ liệu thay cho biểu đồ phân cấp chức năng.

I.1.2 Biểu đồ luồng dữ liệu.

Biểu đồ luồng dữ liệu(BLD) là một loại biểu đồ nhằm mục đích diển tả một q trình xử lý thơng tin với các u cầu sau:

 Sự diễn tả là ở mức logic, nghĩa là nhằm trả lời câu hỏi “Làm gì”, mà bỏ qua câu hỏi “Làm thế nào?”.

 Chỉ rõ các chức năng con phải thực hiện để hoàn tất q trình xử lý cần mơ tả.

 Chỉ rõ các thông tin được chuyển giao giữa các chức năng đó, và qua đó phần nào thấy được trình tự thực hiện của chúng.

(1) Chức năng: Là một quá trình biến đổi dữ liệu( thay đổi giá trị, cấu trúc, vị

trí của một dữ liệu, hoặc từ một số dữ liệu đã cho, tạo ra một dữ liệu mới). Biểu diễn: Bởi hình trịn hoặc ovan bên trong có tên chức năng.

Tên chức năng.

Tên chức năng phải là động từ, có thêm bổ ngữ nếu cần, cho phép hiểu vắn tắt chức năng làm gì.

(2) Các luồng dữ liệu.

Luồng dữ liệu là một tuyến truyền dẫn thơng tin vào hay ra một chức năng nào đó.

Biểu diễn: Một luồng dữ liệu được vẽ trong một BLD dưới dạng một mũi tên,

trên đó có viết tên của luồng dữ liệu.

Tên luồng dữ liệu là danh từ, kèm theo tính ngữ nếu cần, cho phép hiểu vắn tắt nội dung dữ liệu được chuyển giao.

(3) Kho dữ liệu. (adsbygoogle = window.adsbygoogle || []).push({});

Một kho dữ liệu là một dữ liệu đơn hay có cấu trúc được lưu lại, để có thể truy cập nhiều lần về sau.

Biểu diễn: Một kho dữ liệu được vẽ trong BLD dưới dạng hai đoạn thẳng nằm ngang, kẹp giữa tên của kho dữ liệu.

(4) Các đối tác.

Một đối tác ( hay tác nhân ngoài, hay điểm nút) là một thực thể ngồi hệ thống, có trao đổi thơng tin với hệ thống.

Biểu diễn: Đối tác trong biểu đồ luồng dữ liệu vẽ bằng hình chữ nhật, bên trong có tên đối tác.

(5) Tác nhân trong

Một tác nhân trong là một chức năng hay 1 hệ con của hệ thống, được mô tả ở một trang khác của mơ hình, nhưng có trao đổi thơng tin với các phần tử thuộc trang hiện tại của mơ hình. Như vậy tác nhân trong xuất hiện trong biểu đồ chỉ để làm nhiệm vụ tham chiếu.

Biểu diễn: Tác nhân trong biểu đồ luồng dữ liệu được vẽ dưới dạng một hình chữ nhật thiếu cạnh trên, trong đó viết tên tác nhân trong ( chức năng hay hệ thống con).

Tên tác nhân trong phải là động từ, kèm theo bổ ngữ nếu cần.

Một phần của tài liệu đồ án tốt nghiệp :quản trị cơ sở dữ liệu Oracle để xây dựng hệ thống bán hàng tại công ty VINDA (Trang 31 - 36)