我有一个正在TOAD中执行的SQL脚本。目前,我只用一条接一条的语句来展示它,因此:
select such-and-such from somewhere;
delete other-thing from somewhere-else;诸若此类。一些where子句最终是重复的,因为我有复杂的内部查询来获得要操作的特定ID。我想在一个变量中捕获脚本开头的ID,然后在后续的where子句中使用该变量。所以就像这样:
variable MY_ID = select the-ID from somewhere;
select such-and-such from somewhere where ID = @MY_ID;显然,这是我编造的语法,但这正是我要找的。但我不确定这在TOAD脚本中是否可行。我知道我可以将整个代码转换为PL/SQL块,但我正努力避免由于各种原因而不得不这样做。
有什么方法可以在不转换为PL/SQL块的情况下使用TOAD完成此操作?
发布于 2009-12-23 03:04:30
我想这会达到你想要的效果。您可以声明绑定变量,在其中插入一个值,然后在将来的语句中使用它。
variable l_var varchar2(1);
begin
select dummy
into :l_var
from dual;
end;
select *
from dual
where dummy = :l_var;发布于 2017-01-21 00:08:58
我使用SQL*+替代变量。它们是由TOAD支持的。您可以通过按F5来执行此代码。
COLUMN VAR NEW_VALUE VAR_VALUE
SELECT 'SOMETHING' VAR FROM DUAL; --this sets 'VAR_VALUE' = 'SOMETHING'
SELECT '&VAR_VALUE' FROM DUAL; --this uses the value set by the previous stmt.发布于 2009-12-23 01:00:37
我不再经常使用TOAD,但应该有一些机制来设置绑定参数的值,即select such-and-such from somewhere where ID = :myid;,这样每次出现绑定参数时,TOAD都会为该参数提供相同的值。
或者,您可以创建一个会话上下文值或PL/SQL包变量(注意:与重写整个代码以使用PL/SQL不是一回事)。请参阅this question
https://stackoverflow.com/questions/1947280
复制相似问题