Trong hướng dẫn này, tôi đưa ra 4 ví dụ về khối ẩn danh PL / SQL để bạn có thể tìm hiểu cách tạo và sử dụng các khối ẩn danh trong cơ sở dữ liệu Oracle. Các khối ẩn danh trong PL / SQL là các chương trình không có bất kỳ câu lệnh Tạo Thủ tục hoặc Hàm Tạo nào và nó không lưu trong cơ sở dữ liệu Oracle. Các khối ẩn danh PL / SQL chủ yếu được sử dụng để thử nghiệm hoặc để chạy chương trình trong cơ sở dữ liệu Oracle một lần duy nhất.
1. Khối ẩn danh PL / SQL để in số theo thứ tự ngược lại
Chương trình PL / SQL sau sẽ in các số từ 0 đến 10 theo thứ tự ngược lại, sử dụng mệnh đề REVERSE trong vòng lặp for.
SET SERVEROUTPUT ON; DECLARE counter NUMBER; BEGIN FOR counter IN REVERSE 0..10 LOOP DBMS_OUTPUT.PUT_LINE (counter); END LOOP; END; /
Đầu ra
10 9 8 7 6 5 4 3 2 1 0 PL/SQL procedure successfully completed.
2. Số lượng nhân viên in trong một bộ phận
Chương trình PL / SQL sau sẽ đếm số nhân viên trong bộ phận 90. Bảng này lấy từ lược đồ HR của cơ sở dữ liệu Oracle. Bạn có thể tải xuống lược đồ này từ liên kết sau Tải xuống Lược đồ Nhân sự.
SET SERVEROUTPUT ON; DECLARE emp_count NUMBER; v_department_id NUMBER := 90; BEGIN SELECT COUNT ( * ) INTO emp_count FROM employees WHERE department_id = v_department_id; DBMS_OUTPUT.PUT_LINE( 'The employee count is: ' || emp_count || ' for the department with an ID of: ' || v_department_id); END; /
Đầu ra
The employee count is: 3 for the department with an ID of: 90 PL/SQL procedure successfully completed.
3. Lấy đầu vào trong PL / SQL Anonymous Block and Print
Trong ví dụ dưới đây, nó sẽ yêu cầu nhập từ người dùng cho id bộ phận và sẽ in số lượng nhân viên trong bộ phận đó, đồng thời sẽ in tên bộ phận.
SET SERVEROUTPUT ON; DECLARE dept_id_var NUMBER (4) := &department_id; dept_name VARCHAR2 (30); emp_count NUMBER; BEGIN SELECT COUNT ( * ) INTO emp_count FROM employees WHERE department_id = dept_id_var; SELECT department_name INTO dept_name FROM departments WHERE department_id = dept_id_var; DBMS_OUTPUT.PUT_LINE( 'There are ' || emp_count || ' employees ' || 'in the ' || dept_name || ' department.'); END; /
Đầu ra
Enter value for department_id: 60 old 2: dept_id_var NUMBER(4) := &department_id; new 2: dept_id_var NUMBER(4) := 60; There are 4 employees in the IT department. PL/SQL procedure successfully completed.
4. Khối PL / SQL với <> Ví dụ
Khối PL / SQL sau đang sử dụng các nhãn cho khối cha và con. Khối con sẽ truy cập biến của khối mẹ bằng cách sử dụng tham chiếu nhãn của khối mẹ. Chương trình sẽ cập nhật id người quản lý cũ với id người quản lý mới cho các phòng ban.
SET SERVEROUTPUT ON; <<outer_block>> DECLARE mgr_id NUMBER (6) := '¤t_manager_id'; dept_count NUMBER := 0; BEGIN SELECT COUNT ( * ) INTO dept_count FROM departments WHERE manager_id = outer_block.mgr_id; IF dept_count > 0 THEN <<inner_block>> DECLARE dept_name VARCHAR2 (30); mgr_id NUMBER (6) := '&new_manager_id'; BEGIN SELECT department_name INTO dept_name FROM departments WHERE manager_id = outer_block.mgr_id; UPDATE departments SET manager_id = inner_block.mgr_id WHERE manager_id = outer_block.mgr_id; DBMS_OUTPUT.PUT_LINE ( 'Department manager ID has been changed for ' || dept_name); END inner_block; ELSE DBMS_OUTPUT.PUT_LINE ( 'There are no departments listed for the manager'); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE ( 'There are no departments listed for the manager'); END outer_block; /
Đầu ra
Enter value for current_manager_id: 100 old 3: mgr_id NUMBER (6) := '¤t_manager_id'; new 3: mgr_id NUMBER (6) := '100'; Enter value for new_manager_id: 201 old 16: mgr_id NUMBER (6) := '&new_manager_id'; new 16: mgr_id NUMBER (6) := '201'; Department manager ID has been changed for Executive PL/SQL procedure successfully completed.