@@ (double "at" sign)

Syntax

@@file_name[.ext]

Runs a command file. This command is identical to the @ ("at" sign) command. It is useful for running nested command files because it has the additional functionality of looking for the specified command file in the same path or uri as the command file from which it was called. uri is only supported on Windows platforms in this release.

Terms

Refer to the following for a description of the term or clause:

file_name[.ext]

Represents the nested command file you wish to run. If you omit ext, SQL*Plus assumes the default command-file extension (normally SQL). For information on changing the default extension, see the SUFFIX variable of the SET command in this chapter.

When you enter @@file_name.ext from within a command file, SQL*Plus runs file_name.ext from the same directory as the command file.

When you enter @@file_name.ext interactively, SQL*Plus runs file_name.ext from the current working directory or from the same uri as the command file from which it was called. If SQL*Plus does not find such a file, SQL*Plus searches a system-dependent path to find the file. Some operating systems may not support the path search. See the Oracle installation and user's manual provided for your operating system for specific information related to your operating system environment.

Usage

You can include in a command file any command you would normally enter interactively (typically, SQL or SQL*Plus commands).

An EXIT or QUIT command used in a command file terminates SQL*Plus.

The @@ command functions similarly to START.

If the START command is disabled, this will also disable the @@ command. For more information, see the START command later in this chapter.

SQL*Plus removes the SQLTERMINATOR (a semicolon by default) before the @@ command is issued. A workaround for this is to add another SQLTERMINATOR. See the SQLTERMINATOR variable of the SET command in this chapter for more information.

Examples

Suppose that you have the following command file named PRINTRPT:

SELECT DEPARTMENT_ID, CITY FROM EMP_DETAILS_VIEW WHERE SALARY>12000;
@EMPRPT
@@ WKRPT

When you START PRINTRPT and it reaches the @ command, it looks for the command file named EMPRPT in the current working directory and runs it. When PRINTRPT reaches the @@ command, it looks for the command file named WKRPT in the same path as PRINTRPT and runs it.

Suppose that the same command file PRINTRPT was located on a web server and you ran it with START HTTP://HOST.DOMAIN/PRINTRPT. When it reaches the @ command, it looks for the command file named EMPRPT in the current local working directory and runs it. When PRINTRPT reaches the @@ command, it looks for the command file named WKRPT in the same uri as PRINTRPT and runs it.