我写:
CREATE TABLE Person (
name CHAR(10),
ssn INTEGER);
并将其保存到文件“a.sql”中。
如果我随后在 SQL*Plus 命令提示符中键入“@a”来运行它,它会告诉我以“ssn”开头的行未被识别为命令,并被忽略。
据我所知,如果 sqlplus 连续遇到多个换行符,它似乎会终止命令。这是一个准确的说法吗?如果是这样,有谁知道这是否有必要/为什么选择这样做?
我写:
CREATE TABLE Person (
name CHAR(10),
ssn INTEGER);
并将其保存到文件“a.sql”中。
如果我随后在 SQL*Plus 命令提示符中键入“@a”来运行它,它会告诉我以“ssn”开头的行未被识别为命令,并被忽略。
据我所知,如果 sqlplus 连续遇到多个换行符,它似乎会终止命令。这是一个准确的说法吗?如果是这样,有谁知道这是否有必要/为什么选择这样做?
我不知道为什么,但是一个完全空白的行终止了 SQL*Plus 中的一个命令。
引用SQL*Plus 文档:
结束 SQL 命令:您可以通过以下三种方式之一结束 SQL 命令:
您还可以使用 SET SQLBLANKLINES 更改处理空行的方式
SQLBL[ANKLINES] {开|关}
控制 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');
由于上述原因无法正常工作。