TOAD脚本中的变量

时间:2009-12-22 15:59:15

标签: sql oracle plsql toad

我有一个在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块但是我试图避免因各种原因而不得不这样做。

使用TOAD以任何方式执行此操作而不转换为PL / SQL块?

4 个答案:

答案 0 :(得分:9)

我认为这将实现你想要的。您可以声明一个绑定变量,在其中插入一个值,然后在将来的语句中使用它。

variable l_var varchar2(1);

begin
  select dummy
    into :l_var
    from dual;
end;

select *
  from dual
 where dummy = :l_var;

答案 1 :(得分:1)

我使用SQL * PLUS替换变量。他们得到了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.

答案 2 :(得分:0)

我不再主动使用TOAD,但应该有一些机制来设置绑定参数的值,即select such-and-such from somewhere where ID = :myid;,这样每次发生时,TOAD为该参数提供相同的值。

或者,您可以创建会话上下文值或PL / SQL包变量(注意:与重写整个代码以使用PL / SQL不同)。见this question

答案 3 :(得分:0)

如果以正确的方式使用,TOAD中的“计算字段”功能实际上非常强大。它只不过是一个将其自身附加到Query本身的“令牌”脚本编辑器。它只能通过查询设计编辑器获得,而不能从本机编辑器中获得,它允许您直接编写SQL。

作为提示,下次创建在TOAD中设计的查询并需要创建复杂的WHERE或子查询时,请尝试“计算字段”功能并使用FORMS选项将您的条件基本上附加到给定列或查询。你会惊讶它有多强大。它有助于使您的SQL查询保持良好的可读格式。