Oracle
 sql >> Database >  >> RDS >> Oracle

restituire una singola riga nella procedura memorizzata su Oracle

Devi selezionare un campo specifico da inserire nel risultato se intendi usarlo in questo modo.

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;

Altrimenti dovrai prima creare un tipo di oggetto, selezionare più campi nel tipo di oggetto e restituirlo. Dovresti CREARE OGGETTO o CREARE RECORD.

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;

Oppure...

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;

In alternativa, puoi restituire un cursore di riferimento.