PROCEDURE [THỦ TỤC]

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

PROCEDURE [THỦ TỤC]

Bài gửi  Admin on Mon Apr 08, 2013 11:04 am

BÀI HỌC TRONG SÁCH [trang 60]:
1.1 Viết một thủ tục để thực hiện việc tăng lương cho các nhân viên với các tham số đầu vào là mã phòng ban và phần trăm lương tăng thêm.
Code:
CREATE PROCEDURE raise_salary (dno NUMBER, percent NUMBER DEFAULT 0.5)
IS
  BEGIN
    UPDATE scott.emp SET sal=sal*((100+percent)/100)
    WHERE deptno=dno;
    COMMIT;
  END raise_salary;

1.2 Gọi thủ tục (ngoài khối lệnh PL/SQL) để tăng lương 10% cho các nhân viên làm việc ở phòng số 20.
Code:
EXECUTE raise_salary(20,10);

1.3 Xóa thủ tục tăng lương.
Code:
 DROP PROCEDURE raise_salary;

BÀI TẬP CÓ HƯỚNG DẪN [trang 127]:
Câu 1:
1.1 Tạo thủ tục để xóa một nhân viên khỏi danh sách với tham số truyền vào là mã nhân viên.
Code:
CREATE OR REPLACE PROCEDURE Del_Emp (p_EmpNo NUMBER)
IS
  BEGIN
    DELETE FROM scott.emp
    WHERE empno=p_EmpNo;
    COMMIT;
  END Del_Emp;

1.2 Tìm xem nhân viên có mã 7654 có trong bảng không.
Code:
SELECT * FROM scott.emp WHERE empno=7654;

1.3 Thực thi thủ tục xóa nhân viên này.
Code:
EXECUTE Del_Emp(7654);

1.4 Tìm lại xem nhân viên 7654 có còn trong bảng không?
Code:
SELECT * FROM scott.emp WHERE empno=7654;

Câu 3:
3.1 Sử dụng bảng hr.Jobs(Job_id,Job_Title,Min_Salary,Max_Salary): Tạo thủ tục MucLuong nhận vào một Job_id, trả về lương thấp nhất và cao nhất ứng với mã công việc này. Thử gọi thủ tục với các giá trị: IT_PROG, SA_MAN.
Code:
CREATE OR REPLACE PROCEDURE MucLuong (
    p_jobid hr.jobs.job_id%TYPE,
    min_lg hr.jobs.min_salary%TYPE,
    max_lg hr.jobs.max_salary%TYPE) IS
  BEGIN
    SELECT min_lg, max_lg INTO min_salary, max_salary
    FROM hr.jobs
    WHERE job_id = p_jobid;
    COMMIT;
  EXCEPTION
    WHEN no_data_found THEN dbms_output.put_line ('Job id: ' || p_jobid || ' not found!');
    WHEN others THEN dbms_output.put_line ('Unknown error!');
  END;

3.2 Khai báo và gọi thủ tục MucLuong này.
Code:
SET SERVEROUTPUT ON;
DECLARE
  min1 hr.jobs.min_salary%TYPE;
  max1 hr.jobs.max_salary%TYPE;
BEGIN
  MucLuong('&Nhap_ma_cong_viec',min1,max1);
  dbms_output.put_line('MIN SALARY: ' || Min_Salary || ' | ' 'MAX SALARY: " || Max_Salary)
END;

BÀI TẬP TỰ LÀM [trang 128]:
Câu 1:
1.1 Tạo thủ tục TenThang nhận vào 1 ngày-tháng năm (dạng date,ví dụ: 08-Jan-1992), in ra màn hình tên tháng theo tiếng Việt. Thử gọi thủ tục với tháng do người dùng nhập vào.
Code:
CREATE OR REPLACE PROCEDURE TenThang (get_month Date) IS
  t varchar2(20);
  n number;
  BEGIN
    n:= extract (month from get_month)
    case n
      when 1 then t:= 'Thang Mot';
      when 2 then t:= 'Thang Hai';
      when 3 then t:= 'Thang Ba';
      when 4 then t:= 'Thang Tu';
      when 5 then t:= 'Thang Nam';
      when 6 then t:= 'Thang Sau';
      when 7 then t:= 'Thang Bay';
      when 8 then t:= 'Thang Tam';
      when 9 then t:= 'Thang Chin';
      when 10 then t:= 'Thang Muoi';
      when 11 then t:= 'Thang Muoi Mot';
      when 12 then t:= 'Thang Muoi Hai';
        else t:= 'Khong xac dinh';
        end else;
      dbms_output.put_line(t);
  END;

Câu 2:
[b]2.1 Các nhân viên làm việc không tốt sẽ bị trừ tiền thưởng. Viết một thủ tục để giảm tiền thưởng cho nhân viên. Với mã nhân viên và phần trăm giảm được truyền vào từ tham số.
[code]

Admin
Admin

Tổng số bài gửi : 217
Reputation : 20
Join date : 17/11/2012
Age : 24

Xem lý lịch thành viên http://elcit.forumvi.com

Về Đầu Trang Go down

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang


 
Permissions in this forum:
Bạn không có quyền trả lời bài viết