ACCEPT là một lệnh máy khách SQL * Plus và SQL Developer , không phải là lệnh PL / SQL. Bạn đang đặt một biến thay thế mà bạn có thể sử dụng trong một khối ẩn danh với:
ACCEPT lastname CHAR FORMAT 'A20' PROMPT 'Enter employee lastname: '
SET serveroutput on;
BEGIN
DBMS_OUTPUT.PUT_LINE('&lastname');
END;
/
Tuy nhiên, nó sẽ phổ biến hơn nếu sử dụng nó trong SQL:
select '&lastname' from dual;
PL / SQL không được thiết kế để sử dụng tương tác, nhưng không rõ bạn sẽ thực sự làm gì.
Nhà phát triển SQL (ít nhất là phiên bản 4.1.3) dường như không xử lý định dạng format
khá giống với SQL * Plus, có thể là một lỗi. Nếu bạn sử dụng ACCEPT như được hiển thị trong câu hỏi và mã ở trên không có lời nhắc hoặc đầu ra từ tập lệnh; ngăn ghi nhật ký hiển thị thông báo 'nghiêm trọng' từ Accept.java:341. Nó hoạt động nếu bạn cũng cung cấp một giá trị mặc định:
ACCEPT lastname CHAR FORMAT 'A20' DEFAULT 'dummy' PROMPT 'Enter employee lastname: '
Giá trị mặc định không được hiển thị trong hộp thoại nhắc và biến thay thế của bạn sẽ chứa giá trị mặc định đó nếu bạn chỉ OK hộp thoại - đó là hành vi mong đợi "nếu không có trả lời". Nếu bạn không muốn một mặc định, bạn hơi bị mắc kẹt - chỉ định một mặc định rỗng (với ''
) cũng nhận được thông báo nghiêm trọng tương tự, có thể có liên quan.