Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Selecione um único valor de coluna e armazene-o na variável oracle sql


Se você quiser usar rownum e order by você tem para colocar a ordem em uma subconsulta. Não há outra maneira de garantir que você obtenha o valor correto.

Também é uma boa prática lidar com a possibilidade de não haver um id que corresponda à sua consulta. Adicionei um begin... end; adicional bloco para lidar com isso.
declare
   v_id a.id%type;
begin

   begin
      select id into v_id 
        from ( select id
                 from a 
                 where name = 'test' 
                 order by id desc )
       where rownum < 2 
             ;
    exception when no_data_found then
      v_id := null;
    end;

   dbms_output.put_line(v_id);
   doSomething(v_id);

end;
/

Como @raukh observou (enquanto eu estava escrevendo isso!), o problema é print , que deve ser dbms_output.put_line()