ACCEPT je příkaz klienta SQL*Plus a SQL Developer , nikoli příkaz PL/SQL. Nastavujete substituční proměnnou, kterou můžete použít v anonymním bloku s:
ACCEPT lastname CHAR FORMAT 'A20' PROMPT 'Enter employee lastname: '
SET serveroutput on;
BEGIN
DBMS_OUTPUT.PUT_LINE('&lastname');
END;
/
Běžnější by však bylo použití v SQL:
select '&lastname' from dual;
PL/SQL není navrženo pro interaktivní použití, ale není jasné, co budete skutečně dělat.
Zdá se, že SQL Developer (minimálně verze 4.1.3) nezvládá format
úplně stejné jako SQL*Plus, což může být chyba. Pokud použijete ACCEPT, jak je ukázáno v otázce a výše uvedeném kódu, skript nevyvolá žádnou výzvu ani výstup; podokno protokolování zobrazuje 'závažnou' zprávu z Accept.java:341. Funguje to, pokud zadáte také výchozí:
ACCEPT lastname CHAR FORMAT 'A20' DEFAULT 'dummy' PROMPT 'Enter employee lastname: '
Výchozí hodnota se v dialogovém okně výzvy nezobrazuje a vaše substituční proměnná bude tuto výchozí hodnotu obsahovat, pokud dialogové okno pouze potvrdíte – což je očekávané chování „pokud není dána odpověď“. Pokud nechcete výchozí nastavení, trochu se zaseknete - zadáním výchozí hodnoty null (s ''
) také obdrží stejnou závažnou zprávu, která může souviset.