ACCEPT is een SQL*Plus en SQL Developer client-opdracht , geen PL/SQL-opdracht. U stelt een vervangingsvariabele in, die u gebruikt in een anoniem blok met:
ACCEPT lastname CHAR FORMAT 'A20' PROMPT 'Enter employee lastname: '
SET serveroutput on;
BEGIN
DBMS_OUTPUT.PUT_LINE('&lastname');
END;
/
Het zou echter gebruikelijker zijn om het in SQL te gebruiken:
select '&lastname' from dual;
PL/SQL is niet ontworpen om interactief te worden gebruikt, maar het is niet duidelijk wat je echt gaat doen.
SQL Developer (versie 4.1.3, tenminste) lijkt niet om te gaan met format
vrij hetzelfde als SQL*Plus, wat een bug kan zijn. Als u ACCEPT gebruikt zoals weergegeven in de vraag en de bovenstaande code, is er geen prompt of uitvoer van het script; het logboekvenster toont een 'ernstig' bericht van Accept.java:341. Het werkt wel als je ook een default opgeeft:
ACCEPT lastname CHAR FORMAT 'A20' DEFAULT 'dummy' PROMPT 'Enter employee lastname: '
De standaardwaarde wordt niet weergegeven in het promptdialoogvenster en uw vervangingsvariabele zal die standaardwaarde bevatten als u het dialoogvenster gewoon OK geeft - wat het verwachte gedrag is "als er geen antwoord wordt gegeven". Als je geen standaard wilt, zit je echter een beetje vast - het specificeren van een null-standaard (met ''
) krijgt ook dezelfde ernstige melding, die mogelijk verband houdt.