sql >> Base de Datos >  >> RDS >> Oracle

Declaración ACCEPT en Oracle PL SQL

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.