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

retourner une seule ligne dans la procédure stockée sur oracle

Vous devez sélectionner un champ spécifique à mettre en résultat si vous comptez l'utiliser comme ça.

declare or replace procedure select_row 
(
    bookingid in integer,
    result out varchar2
) as 
begin
    select booking_name into result from booking where booking.id = bookingid;
end;

Sinon, vous devrez d'abord créer un type d'objet, sélectionner plusieurs champs dans le type d'objet et le renvoyer. Vous devez CRÉER UN OBJET ou CRÉER UN ENREGISTREMENT.

CREATE OBJECT BOOKING_OBJ AS (
     bookingid INTEGER
    ,booking_name VARCHAR2(128)
);

declare or replace procedure select_row 
(
    bookingid in integer,
    result out BOOKING_OBJ
) as 
begin
    select booking_obj(bookingid, booking_name) into result from booking where booking.id = bookingid;
end;

Ou...

CREATE TYPE BOOKING_REC as record(
    bookingid integer,
    booking_name varchar2(100)
);

declare or replace procedure select_row 
(
    bookingid in integer,
    result out BOOKING_REC
) as 
begin
    select bookingid, booking_name into result from booking where booking.id = bookingid;
end;

Vous pouvez également renvoyer un curseur de référence.