为什么ORACLE不允许命令中的连续换行符?

Mat*_*ehm 7 sql oracle whitespace language-design sqlplus

我写:

  • :CREATE TABLE Person(
  • :名字CHAR(10),
  • :
  • :ssn INTEGER);

并将其保存到文件"a.sql"(冒号表示行的开头,不在实际代码中.)

如果我然后在SQL*Plus命令提示符下键入"@a"来运行它,它将告诉我以"ssn"开头的行不被识别为命令,并被忽略.

从我收集的内容来看,如果sqlplus连续遇到多个换行符,它似乎会终止命令.这是一个准确的陈述吗?如果是这样,有人知道这是否必要/为什么选择这样做?

Thi*_*ilo 16

我不知道原因,但是一个完全空白的行终止了SQL*Plus中的命令.

SQL*Plus文档引用:

结束SQL命令:您可以通过以下三种方式之一结束SQL命令:

  • 用分号(;)
  • 在一条线上单独使用斜杠(/)
  • 用一个空白行

您还可以使用SET SQLBLANKLINES更改空白行的处理方式

SQLBL [ANKLINES] {ON | OFF}

控制SQL*Plus是否允许SQL命令或脚本中的空行.ON将空行和新行解释为SQL命令或脚本的一部分.OFF(默认值)不允许SQL命令或脚本或脚本中出现空行或换行.

输入BLOCKTERMINATOR以停止SQL命令输入而不运行SQL命令.输入SQLTERMINATOR字符以停止SQL命令输入并运行SQL语句.


Gar*_*ers 5

默认情况下,SQLPlus会在输入空行时终止(但不执行)语句.它一直都是这样做的.在屏幕编辑器和查询工具之前的几天,它似乎是一个好主意.

您可以使用更改默认行为

设置SQLBLANKLINES

在这种情况下,您必须输入一个只有句号的行来终止(但不执行)一个语句.