用分号或下一行加斜杠终止Oracle sql语句有什么区别?


8

在sql * plus中执行以下两个查询似乎是等效的:

1。

select * from user_tables;

2。

select * from user_tables
/

两个版本之间有什么区别吗?

Answers:


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.

对于在脚本中执行多个SQL和PL / SQL语句的方式,不同的工具可能会有稍微不同的约定,因此请注意,这是特定于SQL * Plus的。


那类似于SQL Server的GO吗?(基本上是一个批处理分离器。)
Nick Chammas

@NickChammas-或多或少,是的。
贾斯汀·凯夫

5

除了贾斯汀所说的-因为/运行缓冲区中的所有内容,它也可以在编辑上一个命令后使用,甚至可以多次运行同一命令。

如果调用edsqlplus,它将尝试AFIEDT.BUF在当前目录中写入一个临时文件,然后调出编辑器(vi,记事本等)供您编辑最后发送的命令。一个退出编辑器,您就可以/用来发送修改后的缓冲区。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.