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

devolver una sola fila en el procedimiento almacenado en Oracle

Debe seleccionar un campo específico para poner en el resultado si lo va a usar así.

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;

De lo contrario, primero deberá crear un tipo de objeto y seleccionar varios campos en el tipo de objeto y devolverlo. Tendrías que CREAR OBJETO o CREAR REGISTRO.

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;

O...

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;

Alternativamente, puede devolver un cursor de referencia.