8

私は書きます:

CREATE TABLE Person ( 
name CHAR(10),

ssn INTEGER);

ファイル「a.sql」に保存します。

次に、SQL*Plus コマンド プロンプトで「@a」と入力して実行すると、「ssn」で始まる行がコマンドとして認識されず、無視されることがわかります。

私が収集したものから、複数の改行文字が連続して発生した場合、sqlplus はコマンドを終了するようです。これは正確な声明ですか?もしそうなら、これが必要かどうか/なぜこれを選択するのか誰かが知っていますか?

4

3 に答える 3

18

理由はわかりませんが、完全に空白の行は SQL*Plus のコマンドを終了させます。

SQL*Plus ドキュメントからの引用:

SQL コマンドの終了: 次の 3 つの方法のいずれかで SQL コマンドを終了できます。

  • セミコロン (;)
  • 単独の行にスラッシュ (/) を付ける
  • 空行あり

SET SQLBLANKLINES で空白行の処理方法を変更することもできます

SQLBL[ANKLINES] {ON|OFF}

SQL*Plus が SQL コマンドまたはスクリプト内で空白行を許可するかどうかを制御します。ON は、空白行と改行を SQL コマンドまたはスクリプトの一部として解釈します。デフォルト値の OFF では、SQL コマンド、スクリプト、またはスクリプトで空白行または改行を許可しません。

BLOCKTERMINATOR を入力して、SQL コマンドを実行せずに SQL コマンドの入力を停止します。SQLTERMINATOR 文字を入力して、SQL コマンド入力を停止し、SQL ステートメントを実行します。

于 2009-04-28T04:04:12.563 に答える
5

デフォルトでは、空白行が入力されると、SQLPlus はステートメントを終了します (実行はしません)。それは常にこれを行ってきました。スクリーン エディターやクエリ ツールが登場する前の時代には、これはおそらく良いアイデアのように思えました。

そのデフォルトの動作を次のように変更できます

SQLBLANKLINES をオンに設定

その場合、ステートメントを終了する (実行しない) には、ピリオドだけで行を入力する必要があります。

于 2009-04-28T03:57:25.077 に答える
0

ただし、varchar2またはclobフィールドに複数行のテキストを挿入する場合は、chr(10)を使用できます。

 insert into t values ('Hello,'||chr(10)||chr(10)||' How are you?');

 insert into t values (
 'Hello,

 How are you');   

上記の理由で動作しません。

于 2011-04-28T17:30:42.360 に答える