繁体   English   中英

对于在单个语句中多次出现的替换变量,如何让 SQL Developer/SQL+ 只提示一次?

[英]How can I make SQL Developer/SQL+ prompt only once for a substitution variable that occurs multiple times in a single statement?

我有一个大致如下的查询:

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

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

如果有办法让它只提示一次使用两次的变量,我该怎么做?

不想用一个脚本,它必须是一个可执行查询。

在我撰写这篇文章时,我想出了如何做到这一点:

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

SQL Developer 然后将提示输入绑定变量,您可以输入它并点击应用。

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

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

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

因此,当您使用 & 替换时,您只是使用单个 & 作为一种更快的方式,而不必再次键入一个值。 通过使用 && 值被锁定在变量名中。 所以 &&variable 与 &&variable1 不同。 通过这种方式,您将收到一次提示,并且您输入的值将遵循该变量名称。 简单地说,如果你像这样编写代码:

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

然后,如果您想使用一组不同的值,则必须将变量名称更改为类似这样的 '&&aVariable3' 和 '&&aVariable4' 应该足以用于另一组。

ACCEPT variableToPrompt PROMPT "Enter variable" DEFAULT "test";

SELECT
    *
FROM    
    TABLE
WHERE
    COLUMN = '&variableToPrompt'

请注意,仅当您的变量是字符串时,才需要 '&variableToPrompt' 中的 '。 默认值是可选的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM