Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Instrução ACCEPT no Oracle PL SQL


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.