1

この超軽量の質問を前もってお詫びしますが、sqlplus の潜在的な代替品として sqlcl を使い始めたときに何かが欠けています。

sqlcl は説得力がありますが、匿名ブロックを対話的に実行する方法がわからないという点で困っています。以下の例は、Little-Anonymous-Block.sql として保存し、@Little-Anonymous-Block.sql を介して sqlcl で実行すると正常に動作しますが、生の pl/sql は以下の PLS-00103 で失敗します。

リトル匿名 Block.sql:

BEGIN
  DBMS_OUTPUT.PUT_LINE('This anonymous-block ran in sqlcl!');
END;
/

スクリプトとして実行:

SQL> SET SERVEROUTPUT ON;

SQL> @Little-Anonymous-Block.sql;

この匿名ブロックは sqlcl で実行されました!

PL/SQL プロシージャが正常に完了しました。

ただし、アドホックに実行する:

SQL> 開始

2 DBMS_OUTPUT.PUT_LINE('この匿名ブロックは sqlcl で実行されました!');

3 エンド;

4 /

与えます:

行から始まるエラー: コマンドの 1 -

始める

DBMS_OUTPUT.PUT_LINE('この匿名ブロックは sqlcl で実行されました!');

終わり;/

PLS-00103: 記号"/"が検出されました 記号"/"は無視されました。

sqlcl は、「/」をブロック終了 END と結合しているように見えます。同じコマンドが sqlplus でも正常に機能します。

匿名ブロックを sqlcl でインタラクティブに実行する方法を教えてください。20160513.java 8.0_77 からアーリー アダプター リリースを入手しました。この質問が sqlcl マニュアルにある場合は、申し訳ありませ

4

2 に答える 2

4

で無名ブロックを実行できることがわかりましたexecが、これには制限があります (たとえば、すべてのコードを 1 行にまとめるなど)。 SQLcl セッション

私が知る限り、あなたが見つけたものはバグです。回避策は、ブロックを で終了し、次に示すよう.に でバッファを実行することです。/

ここに画像の説明を入力

于 2016-06-03T19:36:21.693 に答える