@和start是一个东西,他们用于运行其它的脚本文件
@@也是运行其它的脚本文件
他们的不同之处在于路径的问题
在D:\a目录下创建以下两个文件
--------------------1.sql---------------------
@2.sql
--------------------2.sql--------------------
select 1 from dual;
D:\>sqlplus username/passwd@oracle
SQL>@/a/1.sql
SP2-0310:无法打开文件“2.sql"
将1.sql文件修改成@@2.sql后在执行以上语句
SQL>@/a/1.sql
1
-------------
1
SQL>
执行成功了,这里第一次执行@/a/1.sql的时候,当前的工作路径其实并没有改变,还是在D盘,然后执行1.sql里面的@2.sql的时候他是在d盘寻找2.sql文件,因此报错,而改为@@后,意味着,在本次调用中请假设当前目录已经改成了当前执行文件所在目录