[英]How do I set a substitution variable to the result of a query in SQL Developer?
[英]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.