ホームページ >データベース >mysql チュートリアル >PL/pgSQLを使用してPostgreSQLで複数のテーブルフィールドを単一のレコードとして返す方法は?
PL/pgSQL を使用した PostgreSQL のレコードとして複数のテーブル フィールドを返す
PL/pgSQL を使用する場合、複数のテーブルから複数のフィールドを返すレコードとしては、RECORD データ型を使用することで実現できます。これにより、さまざまなデータ型のフィールドを保持できる複合データ型を作成できます。
サンプル コード
追加の複雑さに対処する、次の変更された例を考えてみましょう。テーブル内の個別の行からフィールドを取得する方法:
CREATE TABLE user (id int, school_id int, name varchar(32)); CREATE TYPE my_type AS ( user1_id int, user1_name varchar(32), user2_id int, user2_name varchar(32) ); CREATE OR REPLACE FUNCTION get_two_users_from_school(schoolid int) RETURNS my_type AS $$ DECLARE result my_type; temp_result user; BEGIN SELECT id, name INTO temp_result FROM user WHERE school_id = schoolid ORDER BY id ASC LIMIT 2; result.user1_id := temp_result[1].id; result.user1_name := temp_result[1].name; IF temp_result[2].id IS NOT NULL THEN result.user2_id := temp_result[2].id; result.user2_name := temp_result[2].name; END IF; RETURN result; END $$ language plpgsql;
この例では、 get_two_users_from_school 関数は、user1_id、user1_name、user2_id、および user2_name の 4 つのフィールドを持つ my_type レコードを返します。ユーザー テーブルからデータを取得して整理し、行を単一のまとまりのあるレコードに平坦化します。
動的レコード構造
返されるレコードは厳密には一致しないことに注意してください。特定の数のフィールドに制限されます。データベースから取得したデータに基づいて、任意の数のフィールドを返すことができます。
使用法
この関数を使用するには、次のクエリを実行できます。
SELECT * FROM get_two_users_from_school(123);
これにより、指定された学校 ID からユーザーの詳細を含むレコードが返されます。
以上がPL/pgSQLを使用してPostgreSQLで複数のテーブルフィールドを単一のレコードとして返す方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。