在 sql*plus 中执行时,以下两个查询似乎是等效的:
1.
select * from user_tables;
Run Code Online (Sandbox Code Playgroud)
2.
select * from user_tables
/
Run Code Online (Sandbox Code Playgroud)
两个版本有什么区别吗?
Jus*_*ave 11
单个 SQL 语句没有区别。'/' 字符在它自己的行上告诉 SQL*Plus 执行缓冲区中的命令。您可以在大多数 SQL 语句末尾使用分号作为“/”的简写。但是,如果要执行 PL/SQL 块或执行少量 SQL 语句,例如CREATE TYPE
,则需要使用“/”
SQL> begin
2 null;
3 end;
4 /
PL/SQL procedure successfully completed.
SQL> create type foo as object (
2 col1 number,
3 col2 number );
4 /
Type created.
Run Code Online (Sandbox Code Playgroud)
对于如何在脚本中执行多个 SQL 和 PL/SQL 语句,不同的工具可能有略微不同的约定,因此请注意这是 SQL*Plus 特定的。
除了贾斯汀提到的——因为/
运行缓冲区中的任何内容,它也可以在编辑上一个命令后使用,甚至只是多次运行相同的命令。
如果你调用ed
sqlplus,它会尝试AFIEDT.BUF
在你的当前目录中写入一个临时文件,然后调出一个编辑器(vi、记事本等),让你编辑最后发送的命令。一个你退出编辑器,你/
用来发送修改后的缓冲区。
归档时间: |
|
查看次数: |
4529 次 |
最近记录: |