我们有一些迁移脚本,它们在SQL * Plus脚本中使用@@filename
和@filename
来调用另一个文件。 (例如,将thesql.sql称为其@@thesql
)
我想了解@
和@@
之间的区别。
我发现有很多答案可以解释@filename
将从当前目录中调用文件,但是与双@无关。
FYI:@@filename
和@@filename.sql
似乎都可以正常工作,因为它采用了扩展名
答案 0 :(得分:0)
我最终在https://www.orafaq.com/wiki/SQL*Plus_FAQ#What_is_the_difference_between_.40_and_.40.40.3F上找到了答案
@和@@有什么区别?
@(符号)等效于START命令,用于运行SQL * Plus命令脚本。
SQL> @myscript.sql
单个@符号在当前目录中运行脚本(或一个使用完整或相对路径指定的脚本,或者在您的SQLPATH或ORACLE_PATH中找到的脚本)。
@@将启动一个sqlplus脚本,该脚本与调用该脚本的脚本位于同一目录(相对于当前脚本的目录)。通常用于嵌套命令文件。调用?/ rdbms / admin目录中的下标的脚本通常使用此技术。 @@引用不支持相对目录引用,例如@@ dir / file.sql或@@。/ file.sql。