Oracle
 sql >> база данни >  >> RDS >> Oracle

връща един ред в съхранена процедура на oracle

Трябва да изберете конкретно поле, което да поставите в резултат, ако ще го използвате по този начин.

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;

В противен случай първо ще трябва да създадете тип обект и да изберете няколко полета в типа обект и да го върнете. Ще трябва да СЪЗДАДЕТЕ ОБЕКТ или СЪЗДАДЕТЕ ЗАПИС.

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;

Като алтернатива можете да върнете референтен курсор.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изключване на стойност на запис в група, ако има друг v2

  2. Изпълнение на Oracle JDBC на ResultSet

  3. Въпроси за Oracle DBA в реално време

  4. Достъп до 2-ри елемент в колоната на varray

  5. Как да обединя моите заявки в една заявка (или може да е съхранена процедура..)