Trong Oracle, trước tiên bạn cần khai báo thủ tục trong một đặc tả gói và sau đó tạo thủ tục đầy đủ trong thân gói. Bởi vì nếu bạn cố gắng tạo thủ tục chỉ trong thân gói mà không khai báo nó trong đặc tả gói thì bạn sẽ gặp lỗi PLS-00302 phải khai báo thành phần và ORA-06550 khối PL / SQL không hợp lệ. Vì vậy, dưới đây tôi sẽ đưa ra một ví dụ về cách tạo một thủ tục bên trong một gói trong Oracle.
Trong ví dụ này, chúng tôi sẽ tạo một thủ tục update_comm để cập nhật tiền hoa hồng trong bảng EMP. Quy trình này sẽ lấy tham số cho phần trăm hoa hồng.
Tạo một thủ tục bên trong một gói trong ví dụ Oracle
Khai báo quy trình trong đặc điểm kỹ thuật gói
CREATE OR REPLACE PACKAGE emp_pkg IS PROCEDURE update_comm (i_comm IN emp.comm%TYPE); END emp_pkg;
Tạo quy trình đầy đủ trong phần thân gói
CREATE OR REPLACE PACKAGE BODY emp_pkg IS PROCEDURE update_comm (i_comm IN emp.comm%TYPE) IS BEGIN UPDATE emp SET comm = sal * NVL (i_comm, 0) / 100; COMMIT; END update_comm; END emp_pkg;
Bây giờ bạn có thể thực hiện quy trình này như sau:
BEGIN /* Updating commission with 5% of salary */ emp_pkg.update_comm (5); END;
-
Cách loại bỏ tất cả các phiên oracle đang hoạt động và không hoạt động cho người dùng
-
Làm cách nào để tránh lỗi độ dài biến thô quá dài trong SQL Developer?
-
Tại sao mẫu ngủ đông này số lượng lớn
-
Oracle - ORA-06502:PL / SQL:lỗi số hoặc giá trị (DBMS_OUTPUT)
-
Làm cách nào để tìm các giá trị trùng lặp trong bảng trong Oracle?