ACCEPTは、 SQL*PlusおよびSQLDeveloperクライアントコマンド 、PL/SQLコマンドではありません。 使用できる置換変数を設定しています 匿名ブロック内:
ACCEPT lastname CHAR FORMAT 'A20' PROMPT 'Enter employee lastname: '
SET serveroutput on;
BEGIN
DBMS_OUTPUT.PUT_LINE('&lastname');
END;
/
ただし、SQLで使用する方が一般的です:
select '&lastname' from dual;
PL / SQLはインタラクティブに使用するようには設計されていませんが、実際に何をするかは明確ではありません。
SQL Developer(少なくともバージョン4.1.3)はformat
を処理していないようです SQL * Plusとまったく同じですが、バグの可能性があります。質問と上記のコードに示されているようにACCEPTを使用する場合、スクリプトからのプロンプトや出力はありません。ロギングペインには、Accept.java:341からの「重大な」メッセージが表示されます。デフォルトも指定すると機能します:
ACCEPT lastname CHAR FORMAT 'A20' DEFAULT 'dummy' PROMPT 'Enter employee lastname: '
デフォルト値はプロンプトダイアログボックスに表示されません。ダイアログをOKしただけで、置換変数にそのデフォルト値が含まれます。これは、「応答がない場合」に予想される動作です。デフォルトが必要ない場合は、少し行き詰まっています-nullのデフォルトを指定します(''
を使用) )も同じ重大なメッセージを受け取りますが、これは関連している可能性があります。