我有一个大致这样的查询:
select *
from A_TABLE
where A_COLUMN = '&aVariable'
union
select *
from A_TABLE
where B_COLUMN = '&aVariable';
但是当我运行它时,SQL Developer 两次提示我输入变量,即使它是同一个变量。
如果有办法让它只提示一次使用两次的变量,我该怎么做?
我做 not 想使用脚本,它必须是单个可执行查询。
在撰写这篇文章时,我想到了如何去做:
: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”中的“。 默认值是可选的。