SQL Plus 命令行:箭头键不能回显之前的命令

20

我正在使用 Fedora Core 5 32+ 位操作系统上的 Oracle 10g Express Edition。问题是,当我在 SQL Plus 命令行中使用 SQL 语句时,我无法在键盘上使用向上和向下箭头键来获取以前输入的命令。这在我使用 shell 时非常容易,但是在这里使用 Oracle 命令行界面时完全无效。以下是示例,显示了实际发生的情况。

SQL> drop table mailorders;

Table dropped.

SQL> ^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A

5个回答

20

如果你需要重新运行最后一条命令,那么斜杠“/”会起作用。 按下 / 键然后再按回车键即可重新运行上一条语句。

SQL> select sysdate from dual;

SYSDATE
--------
03-12-17

SQL> /

SYSDATE
--------
03-12-17

SQL> 

14

'l' 命令将显示最后一次运行的命令 (来源:krenger.ch):

SQL> l
  1* select owner, count(1) from dba_tables group by owner
SQL>

要获取更多信息,请打开历史记录 (来源:dba-oracle):

SQL> set history on
SQL> history
  1  select * from dual;
  2  select sysdate from dual;
  3  show history

1
历史命令是一个不错的选择,docs.oracle 18c here。您可以使用 > hist 2 run 来重新运行历史记录中的第二个条目。使用 > help history 获取帮助。 - christianbueno.1
2
对于 'set history on' - 确保您使用的是12.2或更高版本的sqlplus,因为这是一个较新的功能。 - thatjeffsmith

10
SQL*Plus本身不提供此功能。您需要设置rlwrap才能实现该功能。
我们已经构建了一个新的命令行界面,支持SQL*Plus提供的所有功能,还包括更多现代化的功能,例如以前的命令历史记录。它被称为SQLcl。命令历史记录会记住您最近的100个语句/脚本,甚至是来自以前的会话。

2
请注意,此答案是在SQLPlus添加历史记录支持之前编写的。SQLcl的历史记录功能与SQLPlus有很大的区别,请注意这一点。 - thatjeffsmith

8

在 SQL Plus 命令中,您可以通过以下方式获取上一个命令:

1- 显示以前的命令

SQL> history  
  1  l
  2  show history
  3  select * from dual;

2- 从之前运行的命令中运行特定的命令

SQL> history 3 run

D
-
X

3- 编辑先前命令的特定部分

SQL> history 2 edit

注意:在使用历史记录功能之前,您需要先激活它:

SQL> set history on

1
在几个步骤中:
  • 安装rlwraphttps://oracle-base.com/articles/linux/rlwrap
  • 找到命令sqlplus的位置:which sqlplus(假设:找到sqlplus的文件夹为$SQLPLUS_HOME
  • 进入该位置:cd $SQLPLUS_HOME
  • 重命名sqlplus文件,例如:mv $SQLPLUS_HOME/sqlplus $SQLPLUS_HOME/sqlplusplus
  • 创建一个名为sqlplus的新脚本:vim $SQLPLUS_HOME/sqlplus
  • 将以下命令放入其中:rlwrap sqlplusplus $@
  • 使其可执行:chmod u+x $SQLPLUS_HOME/sqlplus
  • 运行:sqlplus / as sysdba,您将能够使用上下箭头进行导航。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接