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;
    

    それ以外の場合は、最初にオブジェクトタイプを作成し、オブジェクトタイプに複数のフィールドを選択して、それを返す必要があります。 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;
    

    または、参照カーソルを返すこともできます。




    1. SQLクエリが期待される結果を表示しない

    2. WindowsでのperlDBI-mysqlのインストールに関する問題

    3. Oracleの複数の列の値を連結します

    4. SYS_CONNECT_BY_PATHを使用したOracleの累積カウント