ACCEPT è un SQL*Plus e SQL Developer client command , non un comando PL/SQL. Stai impostando una variabile di sostituzione, che potresti utilizzare in un blocco anonimo con:
ACCEPT lastname CHAR FORMAT 'A20' PROMPT 'Enter employee lastname: '
SET serveroutput on;
BEGIN
DBMS_OUTPUT.PUT_LINE('&lastname');
END;
/
Sarebbe più comune usarlo in SQL però:
select '&lastname' from dual;
PL/SQL non è progettato per essere utilizzato in modo interattivo, ma non è chiaro cosa farai davvero.
SQL Developer (versione 4.1.3, almeno) non sembra gestire il format
proprio come SQL*Plus, che potrebbe essere un bug. Se si utilizza ACCEPT come mostrato nella domanda e nel codice sopra non viene visualizzato alcun prompt o output dallo script; il riquadro di registrazione mostra un messaggio "grave" da Accept.java:341. Funziona se fornisci anche un valore predefinito:
ACCEPT lastname CHAR FORMAT 'A20' DEFAULT 'dummy' PROMPT 'Enter employee lastname: '
Il valore predefinito non viene visualizzato nella finestra di dialogo del prompt e la variabile di sostituzione conterrà quel valore predefinito se si semplicemente OK la finestra di dialogo, che è il comportamento previsto "se non viene fornita una risposta". Se non vuoi un valore predefinito, sei un po' bloccato, specificando un valore predefinito nullo (con ''
) riceve anche lo stesso messaggio grave, che potrebbe essere correlato.