Oracle
 sql >> Database >  >> RDS >> Oracle

Istruzione ACCEPT in Oracle PL SQL

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.