0
select * from test where test like '%test%'

这将使用 sqldeveloper 返回预期的数据,但是从使用 sqlcl 的命令行中,当我键入此命令并按 Enter 键时,我只会看到 2。如果我再次按 Enter 键,我会看到 3。

我在这里想念什么?我在涵盖此内容的 sqlcl 文档中看不到任何内容。

4

3 回答 3

2

它的行为与 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 的博客上阅读更多相关信息。)

于 2016-06-16T19:00:01.943 回答
1

我怀疑您需要用分号终止查询。

select * from test where test like '%test%';
于 2016-06-16T18:59:43.727 回答
1

您正在加载缓冲区,并且该工具会提示您输入下一行。要执行缓冲区中的内容,请键入斜杠 ('/') 并按 Enter。

于 2016-06-16T19:00:00.230 回答