ĐỀ THI VÀ GIẢI ĐỀ MÔN - CHUYÊN ĐỀ ORACLE
Nội
dung đề thi
1.
Hãy nêu ra các đặc trưng của hệ quản
trị Oracle XEM TÀI LIỆU
2.
Hãy cho biết một PS/SQL Package gồm
mấy phần , đó là các phần nào? Hãy mô tả chi tiết mỗi phần đó XEM TÀI LIỆU
3.
Hãy sử dụng hàm(Stored Function) với
tham số truyền vào là ngày công làm việc (Ngày Công) với mô tả sau:
Create
or Replace Function F_Xeploai
(
NgayCong Number
)Return
Char
Is
Begin
???
End
F_XepLoai;
Yêu
cầu: Viết hoàn chỉnh hàm (Stored Function) trên với các
công việc sau:
Xếp loại cho nhân viên dựa vào các tiêu
chuẩn sau:
“Loại A” nếu Ngày Công > =
27
“Loại B” nếu
Ngày Công > = 25
“Loại C” nếu
Ngày Công > = 23
“Loại D” còn
lại
CREATE OR REPLACE FUNCTION F_XEPLOAI
(
NGAYCONG
NUMBER
)RETURN CHAR
IS
BEGIN
CASE
WHEN NGAYCONG >=27
THEN RETURN ‘LOẠI A’;
WHEN NGAYCONG >=25
THEN RETURN ‘LOẠI B’;
WHEN NGAYCONG >=23 THEN RETURN ‘LOẠI C’;
ELSE RETURN ‘LOẠI D’;
END CASE;
END F_XEPLOAI;
Sau
đó cho biết cách gọi thực thi hàm(Store Function ) vừa viết ở trên
SET SERVER OUTPUT ON
BEGIN
DBMS_OUPUT.PUT_LINE(F_XEPLOAI(30));
END;
4.
Tạo một Store Procedure quản lý mảng
một chiều trong đó có các tham số trả ra
là Mảng chứa các số nguyên tố (MangNT), giá trị nhỏ(Min) và lớn (Max) nhất có
trong mảng với mô tả như sau:
Create
Or Replace Type Mang Is VARRAY (100) Of
Number –tạo mảng
Create
Or Replace Procedure P_Out
(
MangNT Out Mang,
Max Out Number,
Min Out Number
)Is
Begin
???
End
P_Out;
Yêu
cầu: Viết
hoàn chỉnh thủ tục (Stored Procedure ) trên để thực hiện các công việc sau
a.Phát
sinh mảng một chiều với các số ngẫu nhiên nằm [1-100]
b.Xuất
các giá trị trong mảng
c.Tìm
giá trị lớn nhất và giá trị nhỏ nhất trong mảng
d.Trả
ra mảng chứa các số nguyên tố
CREATE OR REPLACE PROCEDURE P_OUT
(
MANGNT
OUT MANG,
MIN
OUT NUMBER,
MAX
OUT NUMBER
)IS TYPE MANG IS VARRAY(100) OF NUMBER;
BEGIN
a.Phát sinh mảng một chiều với các số ngẫu nhiên nằm [1-100]
FOR I IN 1..100
LOOP
MANG(I):=
ROUND(DBMS_RANDOM.VALUE(1,100),0);
END LOOP;
b.Xuất các giá trị trong mảng
FOR I IN
MANG.FIRST..MANG.LAST
LOOP
DBMS_OUTPUT.PUT_LINE(MANG(I));
EBD LOOP;
c.Tìm giá trị lớn nhất và giá trị nhỏ nhất trong mảng
MIN := MANG(0);
FOR I IN MANG.FIRST..MANG.LAST
LOOP
IF MANG(I) > MIN
THEN
MIN := A(I);
END IF;
END LOOP;
MAX := MANG(0);
FOR I IN MANG.FIRST..MANG.LAST
LOOP
IF MANG(I) < MAX
THEN
MAX := MANG(I);
END IF;
END LOOP;
d.Trả ra mảng chứa các số nguyên tố
FOR I IN MANG.FIRST..MANG.LAST
LOOP
IF
MOD(MANG(I),1):=0
||MOD(MANG(I),MANG(I)):=0 THEN
DBMS_OUTPUT.PUT_LINE(MANG(I));
END IF;
END LOOP;
END P_OUT;
Sau
đó cho biết cách thực thi hàm (Stored Procedure) vừa viết ở trên
EXEC P_OUT;
5. Giả sử ta có 3 bảng
SINHVIEN(MSSV,HOTEN,NGAYSINH,PHAI,MSLOP)
Mô
tả: Mỗi
sinh viên có một mã số(MSSV), họ tên , ngày sinh , phái và lớp của mình học
SINHVIEN_DETAI(MSSV,MSDT)
Mô
tả:Mỗi
sinh viên có mã số(MSSV) và mã số đề tài mình làm (MSDT)
DETAI(MSDT,TENDT,SOSV)
Mô
tả:Mỗi
đề tài có một mã số đề tài(MSDT) , tên đề tài(TENDT), và số sinh viên thực hiện
đề tài
Ta có phần mô tả Stored
Procedure như sau:
Create
Or Replace Procedure P_Cursor
Is
Begin
???
End
P_Cursor
Yêu
cầu:Viết
hoàn chỉnh thủ tục (Stored Procedure) trên để thực hiện các công việc sau:
Dùng
cơ chế Cursor tính cho việc SOSV cùng thực hiện đề tài trong table DETAI dựa
vào table SINHVIEN_DETAI
CREATE OR
REPLACE PROCEDURE P_CURSOR
IS
CURSOR CS IS
SELECT * FROM SINHVIEN_DETAI;
DEM INT;
BEGIN
FOR I IN CS
LOOP
SELECT COUNT(MSSV) INTO DEM
FROM SINHVIEN
WHERE MSSV =I.MSSV;
UPDATE DETAI
SET SOSV = DEM
WHERE MSDT = I.MSDT;
END LOOP;
END P_CURSOR;
Sau đó cho biết cách thực thi thủ tục
Stored Procedure viết ở trên
EXEC P_CURSOR;
SELECT * FROM DETAI;
No comments :
Post a Comment