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

3つの関連テーブルを持つOracleの関数を使用して、複数の行を1つの列に結合します

    次のように関数を変更する必要があります:

    CREATE OR REPLACE FUNCTION f_test(IN_ID IN TABLE_C.a_id%TYPE) 
    RETURN VARCHAR2 
    IS
    
      l_text  VARCHAR2(32767) := NULL;
    
    BEGIN
    
      FOR cur_rec IN (SELECT b.b_name 
                        FROM TABLE_B b
                        JOIN TABLE_C c ON c.b_id = b.b_id
                       WHERE c.a_id = IN_ID) LOOP
        l_text := l_text || ',' || cur_rec.b_id;
      END LOOP;
    
      RETURN LTRIM(l_text, ',');
    
    END;
    

    次に、次を使用できます:

    SELECT a.a_name, 
           f_test(a.a_id)
      FROM TABLE_A a
    


    1. pggemのインストール;エラー:gemネイティブ拡張のビルドに失敗しました

    2. Count(*)がゼロの場合はNULLを返します

    3. utf8_binとutf_unicode_ci

    4. C#を使用してPostgreSqlから画像を挿入および取得する方法