1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Oracle: Chương 3 - Lê Thị Minh Nguyện

31 8 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 31
Dung lượng 350,8 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chương 3 trình bày những nội dung liên quan đến PL/SQL như: Sử dụng PL/SQL, các khái niện về PL/SQL, các quy tắc cơ bản lập trình PL/SQL, Sequence của Oracle, điều khiển có điều kiện, điều khiển lặp, các ngoại lệ,... Mời các bạn cùng tham khảo để nắm bắt các nội dung chi tiết.

Trang 1

 Điều khiển có điều kiện

 Điều khiển lặp

 Các ngoại lệ

 Cursor

Trang 2

Client

Server

Trang 5

Phần thực thi

when no_data_found then

dbms_output.put_line ('there is no student with student 123');

end;

Trang 6

Thay đổi giá trị trong biến

where student_id= v_student_id;

dbms_output.put_line ('Student name: '||v_first_name||' ‘

||v_last_name);

exception

when no_data_found then

dbms_output.put_line ('there is no student such student’);

Trang 7

Thay đổi giá trị trong biến (tt)

 Thiết lập giá trị SET VERIFY OFF

SET VERIFY OFF

 Định danh cho biến

 Kiểu dữ liệu đối tượng

 Khởi tạo giá trị ban đầu

Trang 8

Định danh cho biến

dbms_output.put_line('v_var1:'||v_var1);

dbms_output.put_line('v_var2:'||v_var2);

END;

15

Kiểu dữ liệu đối tượng

 Kiểu dữ liệu tham chiếu đến trực tiếp một cột trong CSDL

 Cú pháp: <tên_biến>.<kiểu thuộc tính>%TYPE

Trang 9

Khởi tạo giá trị ban đầu

Trang 10

Sequence của Oracle

 Sequence: dùng để tạo tự động các giá trị trong

thuộc tính của dữ liệu

19

Sequence của Oracle (tt)

Trong dó:

Sequence: tên sequence

Increment by n : sô bước nhảy

Start with n : số bắt đầu

Maxvalue n | Nomaxvalue : giá trị lớn nhất

Minvalue n | Nominvalue : giá trị nhỏ nhấtt

Cycle| Nocycle : khi đạt đến max se quay lui

hoặc tiêp tục tăng Mặc định là Nocycle

Cache| Nocache : phát sinh vùng nhớ mặc định

cache có 20 giá trị

Trang 11

Sequence của Oracle (tt)

Insert into test values(test_seq.Nextval);

- Nextval: trả về giá trị sequence kế tiếp

- Currval: trả về giá trị hiện hành của sequence

Trang 12

Sequence của Oracle (tt)

Cú pháp thay đổi các giá trị trong Sequence

Trang 13

END IF;

phát biểu 3;

Trang 15

END CASE

Trang 16

WHEN <điều kiện 1> THEN phát biểu 1;

WHEN <điều kiện 2> THEN phát biểu 2;

WHEN <điều kiện n> THEN phát biểu n;

END CASE

Trang 21

Những ngoại lệ

 Danh sách các lỗi ngoại lệ

 Ngoại lệ do người dùng định nghĩa

41

Danh sách các lỗi ngoại lệ

NO_DATA_FOUND Không trả về dòng nào

TOW_MANY_ROW Trả về nhiều dòng

ZERO_DIVIDE Chia cho zero

LOGIN_DENIED Kết nối vào Oracle với tên và mật

khẩu không hợp lệ PROGRAM_ERROR Chương trình PL/SQL có lỗi bên

trong

Trang 22

Ngoại lệ do người dùng định nghĩa

 Ngoại lệ do người dùng định nghĩa phải được kích

hoạt từng minh

 Khai báo ngoại lệ

Declare Tên ngoại lệException;

 Ví dụ:

Declare e_invalid Exception ;

43

Ngoại lệ do người dùng định nghĩa

Declare exception_name EXCEPTION

Trang 23

when e_invalid_id then

dbms_output.put_line('An id cannot be negation');

Trang 24

Cho biết có bao nhiêu sinh viên đăng ký trong mỗi môn học Hiển

thị mã số môn học cho số lượng sinh viên đăng ký cho môn đó

Declarecursor course_cur is

select course_no, section_id

Trang 25

 Cursor là một vùng nhớ cho phép bạn cấp phát

bộ nhớ và truy cập thông tin được trích từ một

Trang 26

CURSOR(tt)

 Cursor ngầm định: được tự động khai báo bở

Oracle Người dùng không nhận thấy điều khiển

xảy ra và cũng không thể điều khiển hoặc xử lý

thông tin trong cursor ngầm định

 Cursor ngầm định xử lý các phát biểu INSERT,

UPDATE, DELETE và phát biểu SELECt INTO

Trong quá trình xử lý cursor ngầm định Oracle tự

động thực hiện các thao tác OPEN, FETCH,

Cursor ngầm định không cho biết có biêu nhiêu dòng

bị ảnh hưởng bởi thao tác cập nhật

: trả về số dòng được cập nhật

Trang 27

CURSOR(tt)

 Cursor tường minh: cung cấp nhiều khả năng điều

khiển và dễ dàng trong việc bẫy lỗi dữ liệu

 Quy trình làm việc của cursor tường minh

Khai báo cursor

Trang 28

• Lấy dữ liệu về từ cursor

FETCH cursor_name INTO <biến>;

hoặc

FETCH cursor_name INTO record;

Trang 29

CURSOR(tt)

DECLARE Cursor C_MyCursor IS

vr_zip C_MyCursor%ROWTYPE

Begin

open c_zip;

loop

FETCH c_zip INTO vr_zip;

Trang 30

FETCH c_student_name INTO vr_student_name;

EXIT WHEN c_student_name%NOTFOUND;

%ROWCOUNT Cursor_name%ROWCOUNT Trả về số lượng record

%ISOPEN Cursor_name%ISOPEN Trả về TRUE nếu cursor

Trang 31

FETCH c_student INTO v_sid;

dbms_output.put_line('student id: '||v_sid);

EXIT WHEN c_student%NOTFOUND;

Ngày đăng: 08/05/2021, 19:41

🧩 Sản phẩm bạn có thể quan tâm