SQL * PLUS 是什么意思?

2025年4月6日 | 阅读6分钟

在本文中,我们将借助各种示例详细了解 SQL * PLUS。

引言

SQL * PLUS 是 Oracle 的一个组件,用于执行 SQL 语句。它还用于开发用于构建索引、表和其他数据库对象的脚本。它对于应用程序将使用的 SQL 语句的原型设计非常有用。在您优化了适当的 SQL 语句后,您可以将它们合并到应用程序工具中,例如 Visual Basic、Oracle Forms 等。

使用 SQL * PLUS 的优点是,它提供了一个一致的环境来执行脚本,无论它位于哪个操作系统中。它还可以充当报表编写器,能够小计、总计和抑制重复值。

SQL * PLUS 中常用的术语

  • 命令缓冲区: 它是存储最近使用的命令的内存区域。用户可以使用此缓冲区更改、检索或运行其中存储的命令。此命令缓冲区中的每一行都已编号。有三种方法可以修改缓冲区中存储的命令。
    • 通过将缓冲区中的命令传递给外部编辑器,例如 Windows 记事本。
    • 使用 SQL*PLUS 默认命令行编辑器。
    • 通过使用鼠标或从 SQL*PLUS 编辑菜单复制和粘贴。
  • 脚本: 有时可能有许多常用的 SQL 命令和 PL/SQL 块。因此,我们不是每次都编写命令,而是将其存储在一些称为脚本的文件中。这些文件通常具有扩展名 (.SQL)。

使用脚本的优点是

  • 它节省了大量时间,因为无需一遍又一遍地编写相同的命令。
  • 它还可以防止语法错误。

SQL * PLUS 命令

一些基本的 SQL * PLUS 命令是

  • 保存: 它用于将缓冲区的内容保存到文件中。保存内容的主要目的是通过简单地调用包含命令的文件来一遍又一遍地重用相同的命令。它的语法是

在上述语法中, 是文件名和扩展名。如果您未指定文件名的扩展名,则 SAVE 命令默认使用 (.sql) 文件扩展名。但是,您可以指定不同的文件扩展名。

不同的选项是

  • 创建: 当您想保存文件(如果它尚不存在)时使用,否则保存命令将中止。
  • 替换: 它将替换现有文件或创建新文件(如果不存在)。
  • 追加: 它将缓冲区的内容添加到文件末尾,并且原始内容也得以保留。
  • 更改: 此命令用于将缓冲区当前行中的旧文本替换为新文本。
  • 删除: 此命令用于从缓冲区中存储的命令中删除行。
  • 列表: 此命令显示缓冲区中命令的所有行。

假设您已执行以下命令。

现在,如果您想将其保存到文件中,我们将编写

  • 获取: get 命令用于检索使用 SAVE 命令存储到文件中的命令缓冲区的内容。它的语法是

在上述语法中,LIST 提供加载到缓冲区中的行列表(默认值),NOLIST 获取文件而不列出其内容。

  • 运行: 此命令用于显示缓冲区中的 SQL 命令,然后执行它。它类似于 / 命令。唯一的区别是 / 在执行时不显示缓冲区中的内容。它的语法是

考虑一个示例。如果缓冲区中的内容是 (SELECT * FROM Emp_Details),则在写入

RUN 时,缓冲区中的命令将被执行。

  • 启动: 它用于执行文件中指定的命令。它通常具有 .SQL 扩展名。参数也可以通过此命令传递。它的语法是

在上述语法中, 是可选参数。这些参数将替换变量 &1、&2,顺序是从左到右。参数的多个单词应以单引号给出。

考虑一个例子

  • 编辑: 此命令用于显示外部文本编辑器并将缓冲区的内容放入编辑器中。使用 EDIT 命令的主要目的是更改 SQL 语句的内容。

在上述语法中, 是可选的。如果您想省略它,则会在编辑器中打开“afiedt.buf”文件,这是 SQL * PLUS 的默认文件。

考虑一个例子

它将在编辑器中打开文件 Emp_Details.SQL 进行编辑。如果文件保存到目录中而不是 Oracle 的当前工作目录中,则您必须指定文件的完整路径。

  • @,@@: @ 类似于 START 命令。它也用于执行其中指定的文件。

SQL * PLUS 脚本可以包含 START 或 @ 命令来调用其他 SQL * PLUS 脚本。

SQL * PLUS 系统变量

SQL * PLUS 使用许多系统变量来控制每个 SQL * PLUS 会话的特性(当用户登录时会话开始,退出时会话结束)。SET 命令将系统变量设置为特定值,SHOW 命令用于查看系统变量的当前设置。您还可以使用 SHOW 命令查看 SQL * PLUS 中的所有系统变量设置。这些设置也可以通过 SQL * PLUS 环境的选项菜单中的“环境”选项执行。

要查看所有当前设置,请使用以下命令。

执行后,它将列出所有系统变量设置。同样,要查看特定的系统变量设置,例如 user、pagesize、autocommit、linesize 等,我们使用以下命令

下面给出了一些常用的系统变量

AUTOCOMMIT: 如果设置为 ON,则在每个 SQL 语句后执行一次提交。默认情况下为 OFF。

ECHO: 如果为 ON,则 START 命令在执行时列出命令文件中的每个 SQL 语句。SET ECHO OFF 通常用于准备报告,其中您只想查看所需的结果,而不需要 SQL 语句。

FEEDBACK: 如果为 ON,它将指示查询返回的记录数。如果将其设置为数字 n,则仅当返回至少 n 条记录时才显示记录数。默认情况下,其值为 6。

如果您在执行上述命令之前和之后执行以下命令,您将知道差异

HEADING: 默认情况下,SQL * PLUS 显示列标题。要禁用标题显示,只需 SET HEADING OFF。默认情况下为 ON。

LINESIZE: 它控制输出行上显示的最大字符数。但是,如果您想增加行大小,您还需要增加屏幕缓冲区宽度。默认情况下,其值为 80。

NEWPAGE: 它设置从每页顶部到顶部标题打印的空白行数。默认情况下,其值为 1。

NUMWIDTH: 它设置显示数字时使用的宽度。默认情况下,其值为 10。

PAGESIZE: 它定义每页的行数,这决定了何时应显示列标题和页标题。要抑制所有标题、分页符、标题和初始空白行,请将页大小设置为 0。默认情况下,其值为 24。

PAUSE: 它用于在输出的每一页开头暂停。如果设置为 ON,您必须在每次暂停后按 ENTER 键。

SERVEROUTPUT: 如果设置为 ON,它将显示 PL/SQL 块或存储过程的输出。默认情况下为 OFF。

SQLPROMPT: SQL * PLUS 允许您设置自己的 SQL 提示。

TIME: 当设置为 ON 时,它在每个命令提示符之前包含当前时间。在将输出假脱机到文件时很有用。

TIMING: 它将每个 SQL 命令的计时统计信息显示设置为 ON/OFF。它主要用于收集性能信息。

VERIFY: 当设置为 ON 时,它在替换替代变量的值之前和之后显示 SQL/PL-SQL 命令的文本。