sql >> Databasteknik >  >> RDS >> Oracle

returnera en rad i lagrad procedur på oracle

Du måste välja ett specifikt fält för att lägga till resultatet om du ska använda det så.

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;

Annars måste du skapa en objekttyp först och välja flera fält i objekttypen och returnera den. Du måste SKAPA OBJEKT eller SKAPA POST.

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;

Eller...

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;

Alternativt kan du returnera en ref-markör.




  1. Generera SQL Skapa skript för befintliga tabeller med Query

  2. Var lagrar PostgreSQL databasen?

  3. Få en MySQL-grupp efter fråga för att visa raden i den gruppen med det högsta värdet

  4. Hur kombinerar man flera datum-mellan-sökningar med CrudRepository of Spring Data JPA?