ACCEPT е клиентска команда за SQL*Plus и SQL Developer , а не PL/SQL команда. Задавате заместваща променлива, която можете да използвате в анонимен блок с:
ACCEPT lastname CHAR FORMAT 'A20' PROMPT 'Enter employee lastname: '
SET serveroutput on;
BEGIN
DBMS_OUTPUT.PUT_LINE('&lastname');
END;
/
Все пак би било по-често да се използва в SQL:
select '&lastname' from dual;
PL/SQL не е проектиран да се използва интерактивно, но не е ясно какво наистина ще правите.
SQL Developer (поне версия 4.1.3) изглежда не обработва format
съвсем същото като SQL*Plus, което може да е грешка. Ако използвате ACCEPT, както е показано във въпроса и кода по-горе, няма подкана или изход от скрипта; панелът за регистриране показва „сериозно“ съобщение от Accept.java:341. Работи, ако предоставите и по подразбиране:
ACCEPT lastname CHAR FORMAT 'A20' DEFAULT 'dummy' PROMPT 'Enter employee lastname: '
Стойността по подразбиране не се показва в диалоговия прозорец за подкана и вашата променлива за заместване ще съдържа тази стойност по подразбиране, ако просто ОК диалога - което е очакваното поведение "ако не бъде даден отговор". Ако не искате по подразбиране, вие все пак сте малко задръстени - указвайки нулева по подразбиране (с ''
) също получава същото сериозно съобщение, което може да е свързано.