Tài liệu ôn tập, ôn thi. Tài liệu luyện thi

Bài thi oracle cơ bản

No comments


1.     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;
2.     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