Tất cả những gì bạn cần thay đổi là DECLARE
(cho biết sự bắt đầu của một khối ẩn danh) để CREATE PROCEDURE
, với biến mà bạn hiện đang đặt thông qua biến thay thế làm đối số chính thức; vì vậy thay vì:
DECLARE
veno emp.empno%type:=&veno;
vsal emp.sal%type;
vexp number;
BEGIN
...
END;
/
Làm cho nó:
CREATE OR REPLACE PROCEDURE my_proc (veno IN emp.empno%type)
AS
vsal emp.sal%type;
vexp number;
BEGIN
...
END;
/
Sau đó, bạn có thể gọi nó từ một khối ẩn danh hoặc trong SQL * Plus hoặc SQL Developer với execute
viết tắt:
set serveroutput on
execute my_proc(&veno);
Ví dụ này vẫn đang sử dụng một biến thay thế, vì vậy bạn sẽ được thăng hạng cho giá trị sử dụng, nhưng bạn cũng có thể chuyển trực tiếp một số.
Đọc thêm về cách tạo quy trình và các loại tham số .
Bạn có thể đơn giản hóa mã một chút để giảm sự lặp lại và yêu cầu; tra cứu biểu thức trường hợp và mệnh đề trả về. Nhưng điều đó không liên quan trực tiếp.