Oracle
 sql >> Base de données >  >> RDS >> Oracle

Instruction ACCEPT dans Oracle PL SQL

ACCEPT est une commande client SQL*Plus et SQL Developer , pas une commande PL/SQL. Vous définissez une variable de substitution, que vous pouvez utiliser dans un bloc anonyme avec :

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

SET serveroutput on;

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

Il serait cependant plus courant de l'utiliser en SQL :

select '&lastname' from dual;

PL/SQL n'est pas conçu pour être utilisé de manière interactive, mais ce que vous allez réellement faire n'est pas clair.

SQL Developer (version 4.1.3, au moins) ne semble pas gérer le format tout à fait la même chose que SQL*Plus, ce qui peut être un bogue. Si vous utilisez ACCEPTER comme indiqué dans la question et le code ci-dessus, il n'y a pas d'invite ou de sortie du script; le volet de journalisation affiche un message "sévère" de Accept.java:341. Cela fonctionne si vous fournissez également une valeur par défaut :

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

La valeur par défaut n'est pas affichée dans la boîte de dialogue d'invite, et votre variable de substitution contiendra cette valeur par défaut si vous validez simplement la boîte de dialogue - ce qui est le comportement attendu "si aucune réponse n'est donnée". Si vous ne voulez pas de valeur par défaut, vous êtes un peu coincé - en spécifiant une valeur par défaut nulle (avec '' ) reçoit également le même message sévère, qui peut être lié.