ACCEPT es un comando de cliente SQL*Plus y SQL Developer , no un comando PL/SQL. Está configurando una variable de sustitución, que podría usar en un bloque anónimo con:
ACCEPT lastname CHAR FORMAT 'A20' PROMPT 'Enter employee lastname: '
SET serveroutput on;
BEGIN
DBMS_OUTPUT.PUT_LINE('&lastname');
END;
/
Sin embargo, sería más común usarlo en SQL:
select '&lastname' from dual;
PL/SQL no está diseñado para usarse de forma interactiva, pero no está claro lo que realmente hará.
SQL Developer (versión 4.1.3, al menos) no parece manejar format
bastante lo mismo que SQL*Plus, que puede ser un error. Si usa ACEPTAR como se muestra en la pregunta y el código anterior, no hay ningún aviso o resultado del script; el panel de registro muestra un mensaje 'grave' de Accept.java:341. Funciona si también proporciona un valor predeterminado:
ACCEPT lastname CHAR FORMAT 'A20' DEFAULT 'dummy' PROMPT 'Enter employee lastname: '
El valor predeterminado no se muestra en el cuadro de diálogo de solicitud, y su variable de sustitución contendrá ese valor predeterminado si simplemente acepta el cuadro de diálogo, que es el comportamiento esperado "si no se da una respuesta". Sin embargo, si no desea un valor predeterminado, está un poco atascado:especifique un valor predeterminado nulo (con ''
) también recibe el mismo mensaje grave, que puede estar relacionado.