Oracle
 sql >> Datenbank >  >> RDS >> Oracle

ACCEPT-Anweisung in Oracle PL SQL

ACCEPT ist ein Client-Befehl von SQL*Plus und SQL Developer , kein PL/SQL-Befehl. Sie setzen eine Substitutionsvariable, die Sie verwenden könnten in einem anonymen Block mit:

ACCEPT lastname CHAR FORMAT 'A20' PROMPT 'Enter employee lastname:  '

SET serveroutput on;

BEGIN
  DBMS_OUTPUT.PUT_LINE('&lastname');  
END;
/

Es wäre jedoch üblicher, es in SQL zu verwenden:

select '&lastname' from dual;

PL/SQL ist nicht für die interaktive Verwendung konzipiert, aber es ist nicht klar, was Sie wirklich tun werden.

SQL Developer (mindestens Version 4.1.3) scheint format nicht zu verarbeiten ganz dasselbe wie SQL*Plus, was ein Fehler sein kann. Wenn Sie ACCEPT wie in der Frage und im obigen Code gezeigt verwenden, gibt es keine Eingabeaufforderung oder Ausgabe des Skripts. Der Protokollbereich zeigt eine „schwerwiegende“ Meldung von Accept.java:341. Es funktioniert, wenn Sie auch einen Standard angeben:

ACCEPT lastname CHAR FORMAT 'A20' DEFAULT 'dummy' PROMPT 'Enter employee lastname:  '

Der Standardwert wird im Eingabeaufforderungsdialogfeld nicht angezeigt, und Ihre Substitutionsvariable enthält diesen Standardwert, wenn Sie den Dialog einfach bestätigen - was das erwartete Verhalten ist, "wenn keine Antwort gegeben wird". Wenn Sie keinen Standardwert möchten, stecken Sie jedoch etwas fest - indem Sie einen Null-Standardwert angeben (mit '' ) erhält ebenfalls dieselbe schwerwiegende Meldung, die möglicherweise damit zusammenhängt.