sql >> データベース >  >> RDS >> Oracle

同じ列から複数の行を返すように PLSQL 関数を変更する

    関数にいくつかの変更を加える必要があります。 Java側では単純な選択になります

    Java から関数を呼び出す方法の例:

    select t.column_value as process_id 
          from  table(FUNCTION_1(1)) t
    
    --result
        PROCESS_ID
    1   1
    2   2
    
    
    --we need create new type - table of integers
    CREATE OR REPLACE TYPE t_process_ids IS TABLE OF int;
    
    --and make changes in function
    CREATE OR REPLACE FUNCTION FUNCTION_1(
        c_id IN INT)
      RETURN t_process_ids
    AS
      l_ids  t_process_ids := t_process_ids();
    BEGIN
      --here I populated result of select into the local variables
      SELECT process.id
      bulk collect into l_ids
      FROM PROCESS
      WHERE process.corporate_id = c_id
      ORDER BY process.corporate_id;
    
      --return the local var
      return l_ids;
    END FUNCTION_1;
    
    --the script that I used for testing
    create table process(id int, corporate_id int, date_created date);
    insert into process values(1, 1, sysdate);
    insert into process values(2, 1, sysdate);
    insert into process values(3, 2, sysdate);
      


    1. 解決方法通知:未定義のインデックス:21行目のC:\ xampp \ htdocs \ invmgt \manufactured_goods\change.phpのID

    2. PostgreSQLの日付から日、月、年を取得する3つの関数

    3. Oracleのif(condition、then、else)

    4. SQL:同じ関係で列データを他のテーブルに移動します