Oracle
 sql >> Base de données >  >> RDS >> Oracle

Sélectionnez une seule valeur de colonne et stockez-la dans la variable oracle sql

Si vous souhaitez utiliser rownum et order by vous avez pour placer l'ordre dans une sous-requête. Il n'existe aucun autre moyen de garantir que vous obtenez la valeur correcte.

Il est également recommandé de gérer la possibilité qu'il n'y ait pas d'id qui correspond à votre requête. J'ai ajouté un begin... end; supplémentaire bloquer pour gérer cela.

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;
/

Comme @raukh l'a noté (pendant que j'écrivais ceci !), le problème est print , qui devrait être dbms_output.put_line()