- 関数の作成と呼び出し
関数を作成するには、CREATE FUNCTIONステートメントを使用します。関数の定義には、関数名、引数、戻り値の型、および関数の本体が含まれます。例えば、以下のような関数を作成できます:
CREATE FUNCTION calculate_sum(a INT, b INT) RETURNS INT AS $$
BEGIN
RETURN a + b;
END;
$$ LANGUAGE plpgsql;
この関数は、2つの整数引数を受け取り、それらの合計を返します。
関数を呼び出すには、SELECTステートメントで関数名と引数を指定します。例えば:
SELECT calculate_sum(5, 3);
この場合、関数は引数として5と3を受け取り、8を返します。
- テーブルに対する関数の使用
関数はテーブルに対しても使用することができます。例えば、以下のような関数を作成して、テーブルの行数を返すことができます:
CREATE FUNCTION get_row_count() RETURNS INT AS $$
DECLARE
row_count INT;
BEGIN
SELECT COUNT(*) INTO row_count FROM your_table;
RETURN row_count;
END;
$$ LANGUAGE plpgsql;
この関数は、your_tableというテーブルの行数を返します。関数を呼び出すには、以下のようにします:
SELECT get_row_count();
- 集約関数
PostgreSQLには、SUMやAVGなどの集約関数も用意されています。これらの関数は、特定の列の集計値を返します。例えば、以下のようなクエリを実行することで、特定のテーブルの列の合計を求めることができます:
SELECT SUM(column_name) FROM your_table;
- ユーザー定義型を使用した関数
PostgreSQLでは、ユーザー定義型を作成し、それを関数の引数や戻り値に使用することもできます。ユーザー定義型を作成するには、CREATE TYPEステートメントを使用します。例えば:
CREATE TYPE person_type AS (
name VARCHAR(50),
age INT
);
この例では、person_typeという名前のユーザー定義型を作成しています。この型は、名前と年齢の2つのフィールドを持ちます。
ユーザー定義型を使用した関数の例を以下に示します:
CREATE FUNCTION insert_person(p person_type) RETURNS VOID AS $$
BEGIN
INSERT INTO persons (name, age) VALUES (p.name, p.age);
END;
$$ LANGUAGE plpgsql;
この関数は、person_typeのデータを受け取り、personsテーブルに挿入します。
これらはいくつかのPostgreSQL関数の例です。関数を使用することで、データベースの処理を効率化し、再利用可能なコードを作成することができます。