Tải bản đầy đủ

Bài tập thực hành môn cơ sở dữ liệu ORACLE

ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

1


10:12:17 AM

2


Bài tập 1: Xây dựng khối lệnh tính n giai thừa
set serveroutput on;
declare
n number;
gt number;
begin
n:=&n;
gt:=1;
for i in 2..n
loop

gt:=gt*i;
end loop;
dbms_output.put_line(gt);
end;
10:24:08 AM

3


Bài tập 2: Xây dựng khối lệnh xuất bảng cửu chương thứ n
set serveroutput on;
declare
n number;
begin
n:=&n;
for i in 2..9
loop
dbms_output.put_line(n || ' x ' || i || ' = ' || i*n);
end loop;
end;

11:39:15 AM

4


Bài tập 3: Xây dựng khối lệnh giải phương trình bậc nhất
Ax2 + B = 0
Bài tập 4: Xây dựng khối lệnh giải phương trình bậc nhất
Ax2 + Bx + C = 0
Bài tập 5: Xây dựng khối lệnh nhập 3 cạnh tam giác A,B,C. Cho
biết tam giác có hợp lệ không?
Bài tập 6: Xây dựng khối lệnh nhập 3 cạnh tam giác A,B,C. Cho
biết tam giác có hợp lệ không? Nếu có cho biết loại tam giác: đều,
cân, vuông, vuông cân, thường.
Bài tập 7: Xây dựng khối lệnh nhập ngày, tháng, năm. Cho biết
ngày, tháng, năm có hợp lệ không?

11:39:19 AM


5


Bài tập 1: Xây dựng khối lệnh kiểm tra MAKH có tồn tại không?
set serveroutput on;
declare
vMaKH khachhang.MaKH%type;
vHoTen khachhang.HoTen%type;
begin
vMaKH:='&vMaKH';
select HoTen into vHoTen from khachhang
where MaKH = vMaKH;
dbms_output.put_line(vMAKH || ' co ho ten la: ' || vHoTen);
exception
when no_data_found then
dbms_output.put_line('Khong co MaKH ' || vMaKH);
end;
12:02:10 PM

6


Bài tập 2:

Xây dựng khối lệnh nhập NUOCSX cho biết các sản phẩm (MaSP,TenSP)

của nước này?
set serveroutput on;
declare
vNuocSX SANPHAM.NuocSX%type:='&vNuocSX';
vMaSP SANPHAM.MaSP%type;
vTenSP SANPHAM.TenSP%type;
cursor curNuocSX is select MaSP,TenSP from SANPHAM where NuocSX = vNuocSX;
begin
open curNuocSX;
fetch curNuocSX into vMaSP,vTenSP;
if curNuocSX%ROWCOUNT=0 then
dbms_output.put_line('Khong co NuocSX ' || vNuocSX);
else
dbms_output.put_line(vNuocSX || ' san xuat cac san pham:');
dbms_output.put_line('MaSP TenSP');
loop
dbms_output.put_line(vMaSP || ' ' || vTenSP);
fetch curNuocSX into vMaSP,vTenSP;
exit when curNuocSX%NOTFOUND;
end loop;
end if;
close curNuocSX;
end;
2:19:34 PM

7


Bài tập 3: Xây dựng khối lệnh liệt kê sản phẩm bán của từng nhân viên?
set serveroutput on;
declare
vMaNV NHANVIEN.MaNV%type;
vHoTen NHANVIEN.HoTen%type;
vTenSP SANPHAM.TenSP%type;
cursor curNhanVien is select MaNV,HoTen from NHANVIEN;
begin
open curNhanVien;
loop
fetch curNhanVien into vMaNV,vHoTen;
exit when curNhanVien%NOTFOUND;
dbms_output.put_line(vMaNV || ' ' || vHoTen);
/* ---------- */ declare cursor curSanPham is
select distinct tensp
from nhanvien nv,hoadon hd,sanpham sp,cthd ct
where nv.manv = hd.manv and hd.sohd = ct.sohd and ct.masp = sp.masp
and nv.manv = vMaNV;
begin
open curSanPham;
loop
fetch curSanPham into vTenSP;
exit when curSanPham%NOTFOUND;
dbms_output.put_line(' ' || vTenSP);
end loop;
close curSanPham;
/* ---------- */ end;
end loop;
close curNhanVien;
end;

3:21:11 PM

8


Bài tập 4: Xây dựng khối lệnh cho phép xoá CTHD theo SoHD
được nhập vào.
Bài tập 5: Xây dựng khối lệnh cho phép cập nhật lại giá của sản
phẩm ứng với mã sản phẩm nhập vào.
Bài tập 6: Xây dựng khối lệnh cho phép tìm các sản phẩm của
khách hàng đã mua ứng với mã khách hàng cần tìm.
Bài tập 7: Xây dựng khối lệnh cho phép xoá sản phẩm ứng với tên
sản phẩm nhập vào
Bài tập 8: Xây dựng khối lệnh cho phép thêm các sản phẩm mới.

3:25:22 PM

9


Bài tập 1: Xây dựng hàm tính n giai thừa?
create or replace function giaithua(n number) return number
is
gt number;
begin
gt:=1;
for i in 2..n
loop
gt:=gt*i;
end loop;
return gt;
end;
set serveroutput on;
declare
n number;
begin
n:=&n;
dbms_output.put_line(n || ' ! = ' || giaithua(n));
end;
3:36:49 PM

10


Bài tập 2: Xây dựng thủ tục kiểm tra MAKH có tồn tại không?
create or replace procedure kiemtraMaKH(vMaKH in char)
is
vHoTen KHACHHANG.HoTen%TYPE;
begin
select HoTen into vHoTen from khachhang
where MaKH = vMaKH;
dbms_output.put_line(vMAKH || ' co ho ten la: ' || vHoTen);
exception
when no_data_found then
dbms_output.put_line('Khong co MaKH ' || vMaKH);
end;
set serveroutput on;
declare
vMaKH KHACHHANG.MaKH%TYPE;
begin
vMaKH :='&vMaKH';
kiemtraMaKH (vMaKH);
end;
3:53:48 PM

Tương tự hoàn tất
các bài tập khối
lệnh bằng function
hoặc procedure
11


Bài tập 1: Xây dựng ràng buộc khi thêm một khách hàng thì hiển
thị thông báo “Đã thêm thành công”?
create or replace trigger trgInsertKhachHang
after insert on KHACHHANG
for each row
begin
dbms_output.put_line('Da them thanh cong');
end;
set serveroutput on;
insert into KHACHHANG(MaKH,HoTen) values('KH90','ABC');

4:19:38 PM

12


Bài tập 2: Xây dựng ràng buộc khi xoá một khách hàng thì hiển thị
thông báo “Đã xoá thành công”?
create or replace trigger trgInsertKhachHang
after delete on KHACHHANG
for each row
begin
dbms_output.put_line('Da xoa thanh cong');
end;
set serveroutput on;
delete from khachhang
where makh = 'KH90'

4:27:38 PM

13


Bài tập 3: Xây dựng ràng buộc khi thêm một hoá đơn mới thì hiển
thị họ tên của khách hàng ứng với hoá đơn đó?
create or replace trigger trgInsertHoadon
after insert on HOADON
for each row
declare
vMaKH KHACHHANG.MaKH%TYPE;
vHoTen KHACHHANG.HoTen%TYPE;
begin
if :new.MaKH IS NOT NULL then
vMaKH:=:new.MaKH;
select HoTen into vHoTen from khachhang
where MaKH = vMaKH;
dbms_output.put_line('SoHD: ' || :new.SoHD || ' cua khach hang ' || vHoTen);
end if;
end;
set serveroutput on;
insert into HOADON(SoHD,MaKH) values(2001,'KH90');

4:43:54 PM

14


Bài tập 4: Xây dựng ràng buộc khi thêm một hoá đơn mới thì hiển
thị họ tên của nhân viên ứng với hoá đơn đó.
Bài tập 5: Xây dựng ràng buộc khi thêm một CTHD mới thì cập
nhật tự động trị giá của hoá đơn ứng với CTHD vừa thêm.
Bài tập 6: Xây dựng ràng buộc khi xoá một khách hàng thì xoá
toàn bộ các dữ liệu có liên quan của khách hàng này.
Bài tập 7: Xây dựng ràng buộc khi cập nhật giá của một sản phẩm
thì cập nhật lại toàn bộ các dữ liệu có liên quan với sản phẩm này.

4:49:00 PM

15



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×