ACCEPT é um comando de cliente SQL*Plus e SQL Developer , não um comando PL/SQL. Você está definindo uma variável de substituição, que pode usar em um bloco anônimo com:
ACCEPT lastname CHAR FORMAT 'A20' PROMPT 'Enter employee lastname: '
SET serveroutput on;
BEGIN
DBMS_OUTPUT.PUT_LINE('&lastname');
END;
/
Seria mais comum usá-lo no SQL:
select '&lastname' from dual;
O PL/SQL não foi projetado para ser usado interativamente, mas não está claro o que você realmente fará.
SQL Developer (versão 4.1.3, pelo menos) não parece lidar com
format
bem igual ao SQL*Plus, o que pode ser um bug. Se você usar ACCEPT conforme mostrado na pergunta e o código acima, não haverá prompt ou saída do script; o painel de registro mostra uma mensagem 'grave' de Accept.java:341. Funciona se você também fornecer um padrão:ACCEPT lastname CHAR FORMAT 'A20' DEFAULT 'dummy' PROMPT 'Enter employee lastname: '
O valor padrão não é mostrado na caixa de diálogo de prompt, e sua variável de substituição conterá esse valor padrão se você apenas OK na caixa de diálogo - que é o comportamento esperado "se uma resposta não for fornecida". Se você não quer um padrão, você está um pouco preso - especificando um padrão nulo (com
''
) também recebe a mesma mensagem grave, que pode estar relacionada.