Tuan03 TH Oracle [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

1 Khoa Hệ Thống Thông Tin, Trường ĐHCNTT Tp.HCM

HQTCSDL Oracle: Bài thực hành số 3

TRƯỜNG ĐH CÔNG NGHỆ THÔNG TIN TP.HCM

Khoa Hệ Thống Thông Tin Chương trình đào tạo: Kỹ sư Công nghệ thông tin

Bài Thực hành số 3 Tên môn học: HQTCSDL Oracle

NGÔN NGỮ PL / SQL Bài thực hành này giúp sinh viên làm quen với các câu lệnh / khối lệnh PL / SQL. I. Tóm tắt bài thực hành 1.1. Yêu cầu lý thuyết Sinh viên đã được trang bị kiến thức: o Sinh viên đã biết thao tác sử dụng Oracle và công cụ SQL Developer. o Các kiến thức cơ bản về ngôn ngữ PL / SQL. o Các khái niệm: sequences, views, indexs, synnonyms,.. trong Oracle. 1.2. Nội dung  Sử dụng công cụ Oracle SQL Developer 4 R2 kết nối vào CSDL Oracle 11g o Sinh viên xem lại phần thực hành buổi 2. o Kết nối vào CSDL Oracle bằng user đã tạo buổi 2.  Sử dụng công cụ Oracle SQL Developer 4 R2 xây dựng các câu lệnh, khối lệnh cơ bản: o Các câu lệnh nhập / xuất cơ bản trong môi trường Oracle SQL Developer 4 R2. o Khai báo biến, kiểu dữ liệu o Các cấu trúc điều khiển o Thủ tục / Hàm / Trigger o Con trỏ Cursor  Một số lưu ý o Sinh viên cần nắm rõ các khái niệm liên quan đến quy tắc lập trình.

Đỗ Thị Minh Phụng

Trang 1

2 Khoa Hệ Thống Thông Tin, Trường ĐHCNTT Tp.HCM

HQTCSDL Oracle: Bài thực hành số 3

II. Thao tác từng bước 2.1. Xây dựng khối lệnh xuất ra dòng chữ “Hello world” o Kết nối công cụ Oracle SQL Developer 4 R2 với CSDL Oracle và nhập đoạn lệnh sau:

Dòng lệnh dùng để bật trạng thái cho phép hiển thị thông báo phía client

Dòng lệnh dùng để xuất thông báo phía client

Kết quả xuất thông báo phía client “Hello”

Đỗ Thị Minh Phụng

Trang 2

3 Khoa Hệ Thống Thông Tin, Trường ĐHCNTT Tp.HCM

HQTCSDL Oracle: Bài thực hành số 3

2.2. Xây dựng khối lệnh xuất bảng cửu chương thứ n (n nhập từ bàn phím) o Kết nối công cụ Oracle SQL Developer 4 R2 với CSDL Oracle và nhập đoạn lệnh sau:

Đỗ Thị Minh Phụng

Trang 3

4 Khoa Hệ Thống Thông Tin, Trường ĐHCNTT Tp.HCM

HQTCSDL Oracle: Bài thực hành số 3

III. Bài tập làm tại lớp Bài 1. 1) Viết đoạn chương trình nhập n, kiểm tra n có phải là số nguyên tố hay không? 2) Viết đoạn chương trình nhập n, in ra n số nguyên tố. 3) Viết đoạn chương trình giải và biện luận phương trình bậc 2: ax2 + bx + c = 0. 4) Viết đoạn chương trình nhập 3 cạnh tam giác, kiểm tra tam giác có hợp lệ hay không? Nếu có cho biết loại tam giác: đều, cân, vuông, vuông cân? Bài 2. Sử dụng CSDL Quản lý sinh viên (Buổi 2 / Bài 3 – phần bài tập mở rộng – về nhà), sinh viên hoàn thành các câu sau: 1) Viết các lệnh thực hiện những công việc sau: a. Tạo một bảng Cau1 với 2 cột ID (number) và NAME (varchar2(20)). b. Tạo một sequence Cau1Seq với bước tăng là 5. c. Khai báo 2 biến v_name và v_id. Biến v_name, v_id. dùng để chứa giá trị họ, mã của sinh viên được thêm vào. d. Thêm vào bảng Cau1 tên của sinh viên đã đăng kí trong các môn học (bảng enrollment) nhiều nhất. Mã sinh viên sẽ được lấy từ sequence Cau1Seq. Sau thao tác này tạo Savepoint A. e. Thêm vào bảng Cau1 tên của sinh viên đã đăng kí trong các môn học (bảng enrollment) ít nhất. Mã sinh viên sẽ được lấy từ sequence Cau1Seq. Sau thao tác này tạo Savepoint B. f. Làm tương tự đối với các giáo viên có số lượng môn học dạy nhiều nhất. Sau thao tác này tạo Savepoint C. g. Sử dụng câu lệnh SELECT INTO, chứa giá trị của giáo viên có tên tương ứng v_name vào biến v_id. h. Undo giáo viên được thêm vào sử dụng rollback. i. Thêm vào bảng Cau1 giáo viên dạy ít môn học nhất nhưng mã thêm vào không lấy từ sequence mà lấy mã của giáo viên bị rollback truớc đó. j. Làm lại câu f với ID là lấy từ sequence. 2) Viết một đoạn chương trình: người dùng nhập vào mã sinh viên. Nếu sinh viên đó tồn tại thì hiển thị ra họ tên sinh viên và số lớp sinh viên đó đang học. Ngươc lại, yêu cầu người dùng thêm vào sinh viên mới với mã số vừa nhập, các thông tin khác (họ, tên sinh viên, địa chỉ nguời dùng sẽ nhập vào).

Đỗ Thị Minh Phụng

Trang 4

5 Khoa Hệ Thống Thông Tin, Trường ĐHCNTT Tp.HCM

HQTCSDL Oracle: Bài thực hành số 3

Bài 3. Các cấu trúc điều khiển 1) Viết một đoạn mã lệnh: Người dùng nhập vào mã của một giáo viên, xác định số lượng lớp mà giáo viên này đang dạy. Nếu số lớp lớn hơn hoặc bằng 5 thì đưa ra một thông báo: “Giáo viên này nên nghỉ ngơi!”, ngược lại in ra số lớp giáo viên này đang dạy. 2) Viết một đoạn mã lệnh (dùng cấu trúc case): Người dùng nhập vào mã của một sinh viên, mã lớp mà sinh viên này đang học. In ra điểm chữ của sinh viên này: A(90-100), B(80-90), C(70-80), D(50-70) F(0-50). Đồng thời in thông báo lỗi tương ứng khi người dùng nhập mã sinh viên hay mã lớp không tồn tại. IV. Bài tập mở rộng – về nhà Bài 4. Cursor Viết một đoạn chương trình in ra thông tin các môn học và các lớp học thuộc môn học, số lượng sinh viên đăng kí lớp học như sau:

Trong đó: “20 Intro to Computers” : 20 là mã môn học (courseno), Intro to Computers: là tên môn học (description); “Lop: 2 co so luong sinh vien dang ki: 3”: 2 là mã lớp học của môn tương ứng (classid), 3 là số lương sinh viên đăng kí lớp học này (count(*)). Gợi ý: Tạo hai con trỏ (con trỏ sau có đối số là mã môn học), duyệt lần lượt 2 con trỏ này lồng nhau. Bài 5. Các thủ tục và hàm 1) Viết 2 thủ tục a. Thủ tục find_sname có 1 thông số truyền vào (i_student_id), và 2 thông số trả về (o_first_name ,o_last_name) là họ và tên tương ứng của sinh viên với mã số truyền vào. b. Thủ tục print_student_name in ra tên của sinh viên với mã số là đối số truyền vào của thủ tục. 2) Viết thủ tục Discount giảm giá 5% cho tất cả các môn học có số sinh viên đăng kí nhiều hơn 15 sinh viên. Ứng với mỗi môn học được giảm giá in ra tên môn học đó. 3) Viết hàm Total_cost_for_student nhận vào mã số của sinh viên tra về tổng chi phí mà sinh viên đó phải trả. Trả về NULL nếu không tồn tại sinh viên tương ứng.

Đỗ Thị Minh Phụng

Trang 5

6 Khoa Hệ Thống Thông Tin, Trường ĐHCNTT Tp.HCM

HQTCSDL Oracle: Bài thực hành số 3

Bài 6. Trigger 1) Viết trigger cho các tác vụ thêm vào (insert), hay cập nhật (update) cho tất cả các bảng trong lược đồ quan hệ với các trường created_by, created_date, modified_by, modified_date, sẽ do trigger này thêm vào tương ứng với user hiện tại, ngày hệ thống hiện tại. Gợi ý: Dùng các hàm USER, SYSDATE để lấy được người dùng hiện tại, và ngày giờ của hệ thống. 2) Viết trigger hiện thực yêu cầu sau: mỗi sinh viên không được đăng kí quá 4 môn học.

Đỗ Thị Minh Phụng

Trang 6