- :CREATE TABLE人(
- :名称CHAR(10),
- :
- :为ssn INTEGER);
,并将其保存到文件“a.sql”(冒号表示行首,是不是在实际的代码)。
如果我再通过在SQL输入“@a”运行* Plus命令提示符下,它会告诉我,以“ssn”开头的行不会被识别为命令,并且会被忽略。
从我收集的内容看,如果sqlplus在一行中遇到多个换行符时似乎会终止命令。这是一个准确的陈述吗?如果是这样,有谁知道这是否有必要/为什么选择这样做?
,并将其保存到文件“a.sql”(冒号表示行首,是不是在实际的代码)。
如果我再通过在SQL输入“@a”运行* Plus命令提示符下,它会告诉我,以“ssn”开头的行不会被识别为命令,并且会被忽略。
从我收集的内容看,如果sqlplus在一行中遇到多个换行符时似乎会终止命令。这是一个准确的陈述吗?如果是这样,有谁知道这是否有必要/为什么选择这样做?
我不知道为什么,但一个完全空白的行终止SQL * Plus中的命令。
从 the SQL*Plus docs报价:
结束一个SQL命令: 您可以通过以下三种方式之一结束SQL命令:
您也可以更改空行与SET SQLBLANKLINES被视为
SQLBL [ANKLINES] {ON | OFF}
控制SQL * Plus是否允许一个SQL命令或脚本中的空行。 ON将空白行和新行解释为SQL命令或脚本的一部分。 OFF(默认值)不允许空白行或SQL命令或脚本或脚本中的新行。
输入BLOCKTERMINATOR停止SQL命令输入,但不运行SQL命令。输入SQLTERMINATOR字符以停止SQL命令条目并运行SQL语句。
默认情况下,SQLPlus会在输入空行时终止(但不执行)语句。它一直这样做。在屏幕编辑器和查询工具出现之前,这可能看起来是一个好主意。
您可以在
在这种情况下,你必须输入一个符合只是一个句号终止(但不执行)的声明改变与
集SQLBLANKLINES默认行为。
但是,如果你是想插入多行文本的VARCHAR2或CLOB字段,你可以使用 CHR(10)
insert into t values ('Hello,'||chr(10)||chr(10)||' How are you?');
insert into t values (
'Hello,
How are you');
将无法正常工作的原因如上所述。