そのように使用する場合は、結果に入れる特定のフィールドを選択する必要があります。
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;
それ以外の場合は、最初にオブジェクトタイプを作成し、オブジェクトタイプに複数のフィールドを選択して、それを返す必要があります。 CREATEOBJECTまたはCREATERECORDが必要です。
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;
または...
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;
または、参照カーソルを返すこともできます。