sql >> Base de Datos >  >> RDS >> Oracle

Seleccione un valor de una sola columna y guárdelo en la variable Oracle sql

Si desea utilizar rownum y order by usted tiene para poner el orden por en una subconsulta. No hay otra forma de garantizar que obtenga el valor correcto.

También es una buena práctica tratar con la posibilidad de que no haya un id que coincida con su consulta. He agregado un begin... end; adicional bloquear para lidiar con esto.

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 señaló @raukh (¡mientras escribía esto!), el problema es print , que debería ser dbms_output.put_line()