5.3 编辑和执行命令
5.3.1 编辑和执行语句
在SQL﹡Plus提示符(SQL>)下,用户即可输入和编辑SQL语句、PL/SQL语句块或SQL﹡Plus命令。对于SQL语句和PL/SQL语句块,如果一行输入不完时,可以分多行输入,只要语句中每个单词不被分行即可。例如,下面两种输入是完全等价的:
第一种:
SQL>SELECT*FROM dept;
第二种:
SQL>SELECT*
2 FROM dept
SQL>
用户输入SQL语句时,有以下三种方法结束一条SQL语句的输入:
(1)在语句结尾输入一分号(;):这种方法不仅结束SQL语句的输入,并指示SQL*P1us
立即解释执行所输入SQL语句。例如:
SELECT*FROM dept;
该语句执行结果如图5-24所示。
图5-24 执行结果
(2)输入一空行。这种方法只结束SQL语句的输入,但不执行该语句,所输入的内容保存在SQL*Plus的SQL缓冲区中。例如:
SQL>SELECT*
2 FROM dept
3 WHERE deptno<30
执行结果如图5-25所示。
图5-25 执行结果
(3)在一新行开始立即输入一斜杠(/)。这种方式与第一种方式相同,它不仅结束SQL语句的输入,而且使SQL*P1us立即执行已输入的内容。例如:
SQL>SELECT * FROM dept
2/
执行结果如图5-26所示。
图5-26 执行结果
第三种方法与第一种方法不同的是:斜杠(/)结束符只能在一新行的开始输入,其前不能输入任何字符,包括空格和TAB制表符等。否则,SQL*Plus将斜杠(/)结束符认为是SQL语句的一部分,而不退出输入状态。例如:
SQL>SELECT*FROM dept
2/
3
SQL>
执行结果如图5-27所示。
图5-27 执行结果
与SQL语句不同,PL/SQL语句块结束输入的方法不能使用分号和空行,用户只能在一新行中输入点(.)才能结束PL/SQL语句块的输入。后面介绍PL/SQL语言时将详细介绍PL/SQL语句块的语法结构。
结束输入后,在SQL﹡Plus提示符(SQL>)下输入斜杠(/)或RUN命令即可执行SQL缓冲区中的语句。二者不同的是:斜杠(/)只执行命令,而不列出缓冲区中的内容,而RUN命令在执行前先列出SQL缓冲区中的所有语句。例如(其中黑体部分为输入内容):
SQL>SELECT*FROM DEPT
2
SQL>/
执行结果如图5-28所示。
图5-28 执行结果
SQL>RUN
执行结果如图5-29所示。
图5-29 执行结果
无论采用哪种方法结束SQL语句或PL/SQL块的输入,用户所输入的内容均存储在SQL*Plus开辟的内存缓冲区中,该内存区域称作SQL缓冲区。当用户再次输入新的SQL语句或PL/SQL块时,SQL*Plus将刷新SQL缓冲区。但在交互方式下,用户所输入的SQL﹡Plus命令并不刷新SQL缓冲区。
在SQL语句和PL/SQL语句块输入状态,用户按Enter键后将把当前所编辑行内容存入SQL缓冲区。在结束当前命令输入状态之前,用户不能编辑已存入SQL缓冲区的语句。对于当前的编辑行,用户只能使用退格键(Backspace)删除。在结束语句输入状态后,用户可以调用SQL﹡Plus编辑命令修改SQL缓冲区中的数据。常用SQL﹡Plus编辑命令如表5-3所示。
表5-3 SQL*Plus编辑命令
续表
5.3.2 命令文件操作
在编辑SQL﹡Plus命令时,命令后不必添加分号,只需按Enter键SQL*Plus即解释执行所输入的SQL*Plus命令。
在交互方式下,SQL语句和PL/SQL块不能与SQL*Plus命令混合编辑执行。需要混合执行二者时,只能通过创建SQL*Plus命令文件,然后再执行命令文件的方法来解决。
创建SQL*Plus命令文件的方法有很多,其中主要包括:
(1)直接使用纯文本编辑器建立命令文件。
(2)执行SQL*Plus的。EDIT命令调用外部文本编辑器,将要编写的命令存入SQL缓冲区,之后执行SAVE命令将SQL缓冲区中内容写入命令文件。SAVE命令的语法格式为:
SAV[E]file_name[.ext][REP[LACE]│[END]]
其中:
File_name和ext参数:分别说明命令文件名称及其扩展名,默认时命令文件扩展名为.sql。
REP[LACE]选项:说明当指定的命令文件存在时,SQL*Plus用新建立的命令文件内容替换原文件中的内容。APP[END]参数说明将新的命令文件内容追加到原文件后面,不覆盖原文件中的内容。如果既不指定REP[LACE]选项,也不使用APP[END]选项,当所指定的命令文件已经存在时,将导致SAVE命令执行失败。
建立命令文件后执行GET命令可以将命令文件内容调入SQL缓冲区。GET命令的语法格式为:
GET file_name[.ext][LIS[T]│NOL[IST]
其中:
File_name和ext参数:分别说明所调入的命令文件名及其扩展名。
LIST'[T]和NOL[IST]选项:分别说明在调人命令文件后是否列表显示新调入到SQL缓冲区中的命令文件内容。默认时,GET命令列出它所调入的命令文本。
用户创建的命令文件可以采用以下方法执行:
(1)作为SQL*Plus启动文件执行。
(2)执行START或@命令执行,这两个命令的语法格式为:
STA[RT]file_name[.ext][arg…]
@file_name[.ext][arg…]
其中:
File_name和ext参数:分别说明所执行的命令文件名及其扩展名。
arg…:给出命令文件所用参数值。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。