代码之家  ›  专栏  ›  技术社区  ›  Trampas Kirk

如何使SQL Developer/SQL+只提示一次一条语句中出现多次的替换变量?

  •  4
  • Trampas Kirk  · 技术社区  · 16 年前

    我大致有这样一个问题:

     select * 
      from A_TABLE 
      where A_COLUMN = '&aVariable'
        union
     select * 
      from A_TABLE 
      where B_COLUMN = '&aVariable';
    

    但是当我运行它时,SQL开发人员会两次提示我输入变量,即使它是同一个变量。

    如果有一种方法可以使两次使用的变量只提示一次,我该怎么做?

    我愿意 要使用脚本,它必须是单个可执行查询。

    4 回复  |  直到 7 年前
        1
  •  8
  •   Trampas Kirk    16 年前

    当我写这篇文章的时候,我发现了如何做:

     :a_var
     select * 
      from A_TABLE 
      where A_COLUMN = :a_var
        union
     select * 
      from A_TABLE 
      where B_COLUMN = :a_var;
    

    然后,SQL开发人员将提示输入绑定变量,您可以输入该变量并单击应用。

        2
  •  5
  •   user313218    15 年前
    select * 
      from A_TABLE 
      where A_COLUMN = '&aVariable'
        union
     select * 
      from A_TABLE 
      where B_COLUMN = '&&aVariable';
    

    请注意第二个(及后续)变量将如何使用双和号(&&)

        3
  •  3
  •   Dave Costa    16 年前

    我知道你找到了另一种方法,但仅供参考,基本答案是,如果你把符号加起来(例如,使用“&&available”),那么你为替换变量输入的值将在你的会话中被记住。请注意,在这种情况下,如果重新执行查询,则不会再次提示您,而是使用相同的值。

        4
  •  1
  •   Juarren Helgerson    7 年前

    因此,当您使用&substitution时,您只需将single&作为一种更快的方法,而不必再次键入值。通过使用&该值将锁定到变量名中。因此变量与变量1不同。这样做,您将得到一次提示,您输入的值将被附加到该变量名上。如果您这样编写代码:

    SELECT *
    FROM A_TABLE
    WHERE A_COLUMN = '&&aVariable1'
    UNION
    SELECT *
    FROM A_TABLE
    WHERE B_COLUMN ='&&aVariable2';
    

    然后,如果要使用不同的值集,则必须将变量名更改为类似于此的名称“&&avariable3”和“&&avariable4”应足以用于另一个集。

    推荐文章