sql >> Databáze >  >> RDS >> Oracle

vrátit jeden řádek v uložené proceduře na oracle

Pokud ho chcete takto používat, musíte vybrat konkrétní pole, které se má vložit do výsledku.

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;

Jinak budete muset nejprve vytvořit typ objektu a vybrat více polí do typu objektu a vrátit to. Museli byste CREATE OBJECT nebo CREATE 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;

Nebo...

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;

Případně můžete vrátit referenční kurzor.




  1. PLS-00382:výraz je nesprávného typu provedením funkce a pokuste se vložit návratový typ do proměnné

  2. ActiveRecord Fuzzy Search

  3. Vyberte odlišné hodnoty na základě sloupce s maximální hodnotou data z druhého sloupce

  4. Mohu počítat návštěvy, abych určil počet lidí online?