select * from test where test like '%test%'
这将使用 sqldeveloper 返回预期的数据,但是从使用 sqlcl 的命令行中,当我键入此命令并按 Enter 键时,我只会看到 2。如果我再次按 Enter 键,我会看到 3。
我在这里想念什么?我在涵盖此内容的 sqlcl 文档中看不到任何内容。
select * from test where test like '%test%'
这将使用 sqldeveloper 返回预期的数据,但是从使用 sqlcl 的命令行中,当我键入此命令并按 Enter 键时,我只会看到 2。如果我再次按 Enter 键,我会看到 3。
我在这里想念什么?我在涵盖此内容的 sqlcl 文档中看不到任何内容。
它的行为与 SQL*Plus 的行为相同。您已经在命令缓冲区中输入了一行文本,但您没有告诉客户端这是一个完整的语句或告诉它执行它。它显示行号提示以显示它期待更多输入。
您可以用分号结束语句,也可以将斜杠 ( /
) 单独放在新行上;从该文档中:
结束 SQL 命令
您可以通过以下三种方式之一结束 SQL 命令:
- 带分号 (;)
- 在一行上单独带有斜杠 (/)
- 有一个空行
分号 (;) 告诉 SQL*Plus 您要运行该命令。在命令的最后一行末尾键入分号 ...,然后按 Return 或单击执行。SQL*Plus 处理命令并将命令存储在 SQL 缓冲区中。... 如果您在输入分号之前错误地按了 Return,SQL*Plus 会提示您输入命令下一行的行号。键入分号并再次按 Return 或单击执行以运行命令。
一行上的斜杠 (/) 本身也告诉 SQL*Plus 您希望运行该命令。在命令的最后一行的末尾按 Return。SQL*Plus 用另一个行号提示您。键入斜线并再次按 Return 或单击执行。SQL*Plus 执行命令并将其存储在缓冲区中。
SQL Devleoper 也支持这些,使用分号(默认)作为 SQL 终止字符,并允许分号或斜杠终止语句。但是,它允许您从脚本的最后一条语句中省略它,而 SQL*Plus 不允许 - 在这种情况下,该语句将永远不会运行。我认为 SQLcl 的行为也与 SQL*Plus 相同。
(我意识到 SQLcl 并不完全相同,但大多数 SQL*Plus 文档适用于 SQL Developer 及其最近的同级 SQLcl。您可以在ThatJeffSmith 的博客上阅读更多相关信息。)
我怀疑您需要用分号终止查询。
select * from test where test like '%test%';
您正在加载缓冲区,并且该工具会提示您输入下一行。要执行缓冲区中的内容,请键入斜杠 ('/') 并按 Enter。