【问题标题】:What does the "@" do in SQL*PlusSQL*Plus 中的“@”有什么作用
【发布时间】:2013-07-22 07:55:36
【问题描述】:

我在一段 sql 代码中找到了这一行:

@../../sql_scripts/create_tables.sql

它有什么作用?我知道@@file.sql 表示file.sql 已运行,@ 可以在我们稍后提供参数值时使用,但这里我有@ 后跟文件名。我知道有一个类似的问题,但它仅涵盖查询中的@

【问题讨论】:

  • @DarkCthulhu - 不是那个问题的重复。这不是这里的参数。请问什么工具处理这个SQL?
  • 我的错误。不是同一个问题。
  • SQL、TSQL、PSQL 或其他具有 SQL 风格语法的东西是什么意思?您问题中的代码作为标准 SQL 无效。您可能正在使用一些预处理器将该行视为包含或执行。
  • 这个问题应该重新打开,因为它不是重复的。此处的@ 与其他问题中的含义不同。

标签: sql oracle sqlplus


【解决方案1】:

这里的@ 不是SQL 语言的一部分。它可能是 SQL 解释器的命令,可能是 Oracle SQL*Plus。

SQL*Plus 有许多单字符命令,例如 @/(执行缓冲 SQL)、;,当您在 .sql 文件中遇到它们时可能会感到困惑。

@ 记录在 Oracle 9i 文档中的here。在那里你会看到与@@ 的区别。

documentation for Oracle 11g Release 2,点击下一节查看@@参考。

【讨论】:

  • 看起来很可能是候选人。
【解决方案2】:

@ 允许您将另一个脚本导入到您在 SQL*Plus 中运行的 sql 脚本中。

比如这会在指定点执行otherscript.sql的内容:

PROMPT about to run other script

@otherscript.sql

PROMPT finished running other script

另一个例子,这会将另一个文件的内容插入到要在 SQL*Plus 中执行的语句的中间:

SELECT * FROM mytable WHERE
@predicates_for_mytable.sql
AND bla = 1;

唯一的条件是@ 必须出现在该行的第一个字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 2010-09-22
    • 2010-09-26
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 2014-05-17
    相关资源
    最近更新 更多