代码之家  ›  专栏  ›  技术社区  ›  David Oneill

ORACLE:SELECT INTO变量在WHERE子句中使用

  •  2
  • David Oneill  · 技术社区  · 16 年前

    我可以用 select into 将变量的原始值作为select语句中where子句的一部分?

    EI将按预期工作以下代码:

    declare
    v_id number;
    v_table number; --set elsewhere in code to either 1 or 2
    begin
      select id into v_id from table_1 where name = 'John Smith';
      if(v_table = 2) then
        select id into v_id from table_2 where fk_id = v_id;
      end if;
    end;
    
    1 回复  |  直到 16 年前
        1
  •  3
  •   DCookie    16 年前

    应该工作。你试过了吗?有什么问题吗?

    在分析完select语句后,应该在v_id所在的位置绑定变量。替换是在语句实际执行时进行的。

    编辑: 除非您将常量粘贴到查询中,否则Oracle将始终使用绑定变量将它们解析为语句-它使DBMS能够使用具有多个值的同一基本查询而无需重新编译语句-这是一个巨大的性能提升。绑定变量的整个概念是在运行时将值替换为已解析的查询。这样想:为了处理查询,需要知道所有的值。您将它们发送到引擎,Oracle完成它的工作,并返回一个结果。这是一个串行过程,输出值无法步进输入值。